ADD

基于URL路径,把你指定的文件下载到本地,并打包进镜像中

下面继续编写dockerfile,添加ADD指令,下载nginx

add解压 dockerfile docker file add_Dockerfile

打包

add解压 dockerfile docker file add_nginx_02

运行容器,发现并没有对下载的tar包解压

add解压 dockerfile docker file add_nginx_03

刚刚我们发现从远程获取的tar包,在放入容器中时,并不自动在容器中进行解压,接下来我们尝试从本地上传的tar包能否解压,首先下载tar到宿主机中

add解压 dockerfile docker file add_add解压 dockerfile_04

编写dockerfile文件

add解压 dockerfile docker file add_docker_05

构造镜像

add解压 dockerfile docker file add_nginx_06

通过运行容器,可以发现tar包已经被解压

add解压 dockerfile docker file add_add解压 dockerfile_07

WORKDIR

用于为Dockerfile中所有的RUN、CMD、ENTRYPOINT、COPY、ADD指定设定工作目录
比如, “ ./ ”表示“ /usr/local/src ”
WORKDIR /usr/local/src
ADD nginx-1.19.2.tar.gz ./

add解压 dockerfile docker file add_add解压 dockerfile_08

构建镜像

add解压 dockerfile docker file add_Dockerfile_09

add解压 dockerfile docker file add_add解压 dockerfile_10

VOLUME

Volume仅支持,指定容器的挂载点目录,不支持宿主机的挂载点目录
如果挂载点目录路径下之前后文件存在,docker run命令会在卷挂在完成之后将所有文件实现复制共享

编写dockerfile指定容器的挂载点“ /data/mysql ”

add解压 dockerfile docker file add_Dockerfile_11

构造镜像

add解压 dockerfile docker file add_docker_12

运行容器,使其60秒之后关闭

add解压 dockerfile docker file add_add解压 dockerfile_13

查看t1容器的容器挂载点和宿主机挂载点,source为宿主机的挂载点,destination为容器的挂载点

add解压 dockerfile docker file add_nginx_14


add解压 dockerfile docker file add_nginx_15

EXPOSE

因为我们不能确定镜像启动的容器运行在哪个宿主机,因此无法指定绑定地址,并且宿主机的空闲端口也是不确定,我们只能指定镜像暴露的端口,在启动后去动态绑定至宿主机的随机端口和所有地址。
也就是说我们写在dockerfile文件的暴露端口并不能直接暴露,只能说是可以暴露,在“ docker run -P ”的时候才会去暴露所有的端口。

编写dockerfile,去指定对外暴露的端口为80

add解压 dockerfile docker file add_add解压 dockerfile_16

构造镜像

add解压 dockerfile docker file add_nginx_17

运行容器并启动服务

add解压 dockerfile docker file add_Dockerfile_18

另一个窗口进入t1容器,可以看到容器内部已经监控80端口了

add解压 dockerfile docker file add_nginx_19

查看容器t1的ip

add解压 dockerfile docker file add_add解压 dockerfile_20


add解压 dockerfile docker file add_Dockerfile_21

宿主机可以连接t1的ip

add解压 dockerfile docker file add_nginx_22

那么宿主机是否对容器做ip映射去进行外部网路通信了呢?通过查看t1,发现并没有暴露端口,那么如何去暴露端口呢?

add解压 dockerfile docker file add_Dockerfile_23

关闭容器t1,接下来我们将使用“ -P ”来去暴露端口,启动容器

add解压 dockerfile docker file add_docker_24

此时查看t1容器可以发现,端口已经暴露

add解压 dockerfile docker file add_Dockerfile_25

通过外部浏览器也可以访问

add解压 dockerfile docker file add_Dockerfile_26

Docker镜像篇(2) - 玩转Dockerfile指令 - FRM、MAINTAINER、LABEL、COPY

Docker镜像篇(4) - 玩转Dockerfile指令 - ENV、RUN、CMD、ENTRYPOINT