Docker基本知识笔记(二)

一、dockerfile文件

dockerfile是用来构建镜像的文本文件,也可以说是命令参数脚本。

构建命令:docker build命令中使用-f标志指向文件系统中任何位置的dockerfile。

镜像发布的步骤:
1、编写一个dockerfile文件

2、docker build 构建成为一个镜像

3、docker run 镜像

4、docker push 镜像(发布镜像到DockerHub、阿里云镜像仓库)

 2. dockerfile常用指令说明

指令

说明

FROM

指定基础镜像

MAINTAINER

镜像是谁写的,姓名+邮箱

RUN

镜像构建的时候需要运行的命令

ADD

将本地文件添加到容器中,自动解压,可以访问网络资源

WORKDIR

镜像的工作目录

VOLUME

挂载的目录

EXPOSE

保留端口配置(外部可以访问)

CMD

指定容器启动的时候要运行的命令(只有最后一个会生效)

ENTRYPOINT

指定这个容器启动的时候要运行的命令,可以追加命令

COPY

功能类似ADD,但不会自动解压文件+不能访问网络资源

ENV

构建的时候设置环境变量

3.dockerFile文件的脚本注意点

1、每个保留关键字(指令)都必须是大写字母

2、文件中的指令从上到下顺序执行,第一个指令必须是FROM

3、# 号表示注释

4、每一个指令都会创建提交一个新的镜像层,并提交!

4.简单例子

# dockerfile文件
FROM centos:centos7 #宿主机是centos7版本,所以说要指定centos版本,不然出现下载错误
MAINTAINER cc<1111@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash

构建镜像命令:docker build  -f  dockerfile文件路径  -t 镜像名[:版本号]  .(有一点)

上面命令中,-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。

最后的那个点表示 dockerfile 文件所在的路径

# 构建成功
➜  ~ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              v2                  5e8e1131f4a4        3 hours ago         425MB

#查看镜像构建步骤

➜  ~ docker history 5e8e1131f4a4
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
5e8e1131f4a4        3 hours ago         /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B                  
5dedf62a7963        3 hours ago         /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
38a27a2e9bee        3 hours ago         /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
6dbc95e1a7d6        3 hours ago         /bin/sh -c #(nop)  EXPOSE 80                    0B                  
242621127033        3 hours ago         /bin/sh -c yum -y install vim                   221MB               
ada5eb0e9576        3 hours ago         /bin/sh -c #(nop) WORKDIR /usr/local            0B                  
88f5c850044f        3 hours ago         /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B                  
ecc4fd6cbd39        3 hours ago         /bin/sh -c #(nop)  MAINTAINER cc<1111@qq.com>   0B                  
eeb6ee3f44bd        6 months ago        /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           6 months ago        /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           6 months ago        /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4…   204MB  

5.一些类似功能的区别 

RUN命令与CMD命令的区别在哪里?

RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;

CMD命令则是在容器启动后执行。 dockerfile 可以包含多个RUN命令,但只能有一个CMD命令。

注意,指定了CMD命令以后,docker run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令。

CMD和ENTRYPOINT的区别在哪里?

CMD :指定容器启动的时候要运行的命令,只有最后一个会生效
ENTRYPOINT :指定容器启动的时候要运行的命令,命令可以追加

简单例子 CMD 和 ENTRYPOINT

# 创建一个dockerfile 创建一个镜像

# CMD命令
➜  ~ cd dockerfileCentos 
➜  dockerfileCentos ls
dockerfile
➜  dockerfileCentos cat dockerfile 
FROM centos
CMD ["ls","-a"]

➜  dockerfileCentos docker build -t centoscmd .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM centos
 ---> 5d0da3dc9764
Step 2/2 : CMD ["ls","-a"]
 ---> Running in da80d49d2423
Removing intermediate container da80d49d2423
 ---> 7bc022996232
Successfully built 7bc022996232
Successfully tagged centoscmd:latest
➜  dockerfileCentos docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centoscmd           latest              7bc022996232        7 seconds ago       231MB

# 运行镜像,默认运行ls -a 命令
➜  ~ docker run centoscmd
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var


# 添加其他命令 切换到该命令
➜  ~ docker run -it centoscmd /bin/bash
[root@ec7987955f74 /]# 



# ENTRYPOINT 命令
➜  dockerfileCentos cat dockerfile 
FROM centos
ENTRYPOINT ["ls","-a"]

➜  dockerfileCentos docker build -t centosentrypoint .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM centos
 ---> 5d0da3dc9764
Step 2/2 : ENTRYPOINT ["ls","-a"]
 ---> Running in a5f4835894d7
Removing intermediate container a5f4835894d7
 ---> dcc0d31c4355
Successfully built dcc0d31c4355
Successfully tagged centosentrypoint:latest
➜  dockerfileCentos docker run centosentrypoint
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
➜  dockerfileCentos docker run centosentrypoint -l
total 0
drwxr-xr-x.   1 root root   6 Apr 13 15:18 .
drwxr-xr-x.   1 root root   6 Apr 13 15:18 ..
-rwxr-xr-x.   1 root root   0 Apr 13 15:18 .dockerenv
lrwxrwxrwx.   1 root root   7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x.   5 root root 340 Apr 13 15:18 dev
drwxr-xr-x.   1 root root  66 Apr 13 15:18 etc
drwxr-xr-x.   2 root root   6 Nov  3  2020 home
lrwxrwxrwx.   1 root root   7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root   9 Nov  3  2020 lib64 -> usr/lib64
drwx------.   2 root root   6 Sep 15  2021 lost+found
drwxr-xr-x.   2 root root   6 Nov  3  2020 media
drwxr-xr-x.   2 root root   6 Nov  3  2020 mnt
drwxr-xr-x.   2 root root   6 Nov  3  2020 opt
dr-xr-xr-x. 248 root root   0 Apr 13 15:18 proc
dr-xr-x---.   2 root root 162 Sep 15  2021 root
drwxr-xr-x.  11 root root 163 Sep 15  2021 run
lrwxrwxrwx.   1 root root   8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root   6 Nov  3  2020 srv
dr-xr-xr-x.  13 root root   0 Apr 13 08:49 sys
drwxrwxrwt.   7 root root 171 Sep 15  2021 tmp
drwxr-xr-x.  12 root root 144 Sep 15  2021 usr
drwxr-xr-x.  20 root root 262 Sep 15  2021 var


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值