容器深入浅出学习--Docker镜像构建 (2)

FROM:FROM命令可能是最重要的Dockerfile命令,该命令定义了使用哪个基础镜像启动构建流程。基础镜像可以为任意镜像,如果基础镜像没有被发现,docker将试图从docker image index来查找该镜像。FROM命令必须是Dockerfile的首个命令

#Usage: FROM [image name] FROM ubuntu

MAINTAINER:我建议这个命令放在dockerfile的起始部分,虽然理论上它可以放置于dockerfile的任意位置。这个命令用于生命作者,并应该放在RROM的后面。

# Usage: MAINTAINER [name] MAINTAINER authors_name

RUN:RUN命令是dockerfile执行命令的核心部分,它接受命令作为参数 并用于创建镜像。不像CMD命令,RUN命令用于创建镜像(在之前commit的层之上形成的层)

# Usage: RUN [command] RUN aptitude install -y riak

USER:USER命令用于设置运行容器的UID

# Usage: USER [UID] USER 751

VOLUME:VOLUME命令用于让你的容器访问宿主机上的目录

# Usage: VOLUME ["/dir_1", "/dir_2" ..] VOLUME ["/my_files"]

WORKDIR:WORKDIR命令用于设置CMD指明的命令的运行目录

# Usage: WORKDIR /path WORKDIR ~/ 2.3 构建镜像 [root@k8s-01 ~]# cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com" RUN /bin/echo \'root:123456\' |chpasswd RUN useradd runoob RUN /bin/echo \'runoob:123456\' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D

这里每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN指令告诉docker在镜像内指定命令,安装了什么

然后我们使用Dockerfile文件,通过docker build命令来构建一个镜像

执行镜像的构建:

[root@k8s-01 docker]# docker build -t yushengyin/centos:6.7 . Sending build context to Docker daemon 2.048kB Step 1/9 : FROM centos:6.7 6.7: Pulling from library/centos cbddbc0189a0: Pull complete Digest: sha256:da0f2d8fb80e6f82ec8b89c2723cfd6c910196ac3894b681f5b001af7d9cf82d Status: Downloaded newer image for centos:6.7 ---> 192ad0341c8b Step 2/9 : MAINTAINER yushengyin "yushengyin@163.com" ---> Running in b1986e6eb7e1 Removing intermediate container b1986e6eb7e1 ---> 280571722c0a Step 3/9 : RUN /bin/echo \'root:123456\' |chpasswd ---> Running in 2a9e4ed352de Removing intermediate container 2a9e4ed352de ---> 77256a924e7a Step 4/9 : RUN useradd runoob ---> Running in e1312eb6a6a3 Removing intermediate container e1312eb6a6a3 ---> 8e551279ca45 Step 5/9 : RUN /bin/echo \'runoob:123456\' |chpasswd ---> Running in 4bfbfee565f6 Removing intermediate container 4bfbfee565f6 ---> 3988c5ef7688 Step 6/9 : RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local ---> Running in ca280bc04666 Removing intermediate container ca280bc04666 ---> 448d1cf226c2 Step 7/9 : EXPOSE 22 ---> Running in 714f2bd21f68 Removing intermediate container 714f2bd21f68 ---> 8ae1b8ebab8a Step 8/9 : EXPOSE 80 ---> Running in dd99b9df58d0 Removing intermediate container dd99b9df58d0 ---> 63f66a55adea Step 9/9 : CMD /usr/sbin/sshd -D ---> Running in 62c5810140bd Removing intermediate container 62c5810140bd ---> 4f2531db0da1 Successfully built 4f2531db0da1 Successfully tagged yushengyin/centos:6.7

查看镜像:

[root@k8s-01 docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE yushengyin/centos 6.7 4f2531db0da1 15 seconds ago 191MB

使用新镜像启动一个容器:

[root@k8s-01 docker]# docker run -t -i yushengyin/centos:6.7 /bin/bash [root@4d65228dd85a ~]# id runoob uid=500(runoob) gid=500(runoob) groups=500(runoob)

上面的镜像包含我们创建的用户runoob

设置标签:
我们可以用docker tag命令,给镜像添加一个新的标签

[root@k8s-01 docker]# docker tag 4f2531db0da1 yushengyin/centos:dev [root@k8s-01 docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE yushengyin/centos 6.7 4f2531db0da1 2 minutes ago 191MB yushengyin/centos dev 4f2531db0da1 2 minutes ago 191MB

参考链接:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggdjf.html