高级架构师_Docker_第2章_ Docker核心原理_ 第5节 Dockerfile简介

高级架构师_Docker_第2章_ Docker核心原理_ 第5节 Dockerfile简介

Dockerfile简介

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
通常我们创建Docker镜像,主要有以下三种方式:

  1. 基于已有的镜像创建;
  2. 基于 Dockerfile 来创建;
  3. 基于本地模板来导入;

基于已有的镜像创建

commit命令

docker commit :从容器创建一个新的镜像。
语法格式:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

常用参数

  • -a :提交的镜像作者;
  • -c :使用Dockerfile指令来创建镜像;
  • -m :提交时的说明文字;
  • -p :在commit时,将容器暂停。

使用示例:
结合docker cp命令自定义nginx的index页面

docker run -itd --name nginx -p 80:80 192.168.198.101:5000/lagouedu/nginx:v1 

cd /data 
echo "laosiji" > /data/index.html 

docker cp /data/index.html nginx:/usr/share/nginx/html/index.html 

curl localhost 

docker container commit -m "update index.html file" -a "laosiji" nginx 
192.168.198.101:5000/lagouedu/nginx:v2 

docker images 

docker rm -f nginx 

docker run -itd --name nginx -p 80:80 192.168.198.101:5000/lagouedu/nginx:v2 

curl localhost 
docker push 192.168.198.101:5000/lagouedu/nginx:v2

Dockerfile官网地址

https://docs.docker.com/engine/reference/builder/

Dockerfile其实就是我们用来构建Docker镜像的源码,当然这不是所谓的编程源码,而是一些命令的集合,只要理解它的逻辑和语法格式,就可以很容易的编写Dockerfile。简单点说,Dockerfile可以让用户个性化定制Docker镜像。因为工作环境中的需求各式各样,网络上的镜像很难满足实际的需求。

Dockerfile的基本结构

Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。
docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用 -f 标志指向文件系统中任何位置的Dockerfile。
Dockerfile由一行行命令语句组成,并且支持以#开头的注释行
Dockerfile分为四部分:基础镜像信息、维护者信息、 镜像操作指令和容器启动时执行指令。

Dockerfile文件说明

Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以 # 字符开头则被视为注释。可以在Docker文件中使用 RUN , CMD , FROM , EXPOSE , ENV 等指令。

Dockerfile常见命令

img

image.png

使用示例

安装docker插件
idea安装docker插件。Dockerfile、docker-compose.yml文件大部分内容会有提示信息。方便开发人员编写配置文件。
修改mysql官网镜像时区

FROM mysql:5.7.31 

# 作者信息 
MAINTAINER mysql from date UTC by Asia/Shanghai "laosiji@lagou.com" 
ENV TZ Asia/Shanghai

build命令

docker build 命令用于使用 Dockerfile 创建镜像。
语法:docker build [OPTIONS] PATH | URL | -

常用参数:

build命令参数特别多。这里只给大家介绍几个常用的参数,如果小伙伴们想了解更多内容,请参考docker官网手册。

  • 1)–build-arg=[] :设置镜像创建时的变量;
  • 2)-f :指定要使用的Dockerfile路径;
  • 3)–rm :设置镜像成功后删除中间容器;
  • 4)–tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
制作镜像
docker build --rm -t 192.168.198.101:5000/lagouedu/mysql:5.7 . 
docker images
运行镜像
docker run -itd --name mysql --restart always -p 3306:3306 -e 
MYSQL_ROOT_PASSWORD=admin 192.168.198.101:5000/lagouedu/mysql:5.7 

docker logs -f mysql 
docker exec -it mysql bash 

# 观察时间是否与windows系统的时间一致。
date 
测试mysql连接
docker exec -it mysql bash 
mysql -uroot -padmin
-it mysql bash 

# 观察时间是否与windows系统的时间一致。
date 
测试mysql连接
docker exec -it mysql bash 
mysql -uroot -padmin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

管程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值