doina

一个小菜鸟运维工程师.

dockerfile 常用指令及构建镜像

命令 说明
FROM 指定基础运行镜像
MAINTAINER 设置镜像的作者,可以是任意字符串
RUN 运行命令
对镜像执行跟随的命令。每运行一条 RUN 指令,镜像添加新的一层,并提交。最后是 CMD 指令,来指定运行容器时的操作命令。
CMD 启动容器是默认执行的命令,只能有一条,多条只有最后一条会生效
支持三种格式:
CMD [“executable”, “param1”, “param2”] 使用 exec 执行,推荐方式。
CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用。
CMD [“param1”, “param2”] 提供给 ENTRYPOINT 的默认参数。
ENTRYPOINT 配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖
ENTRYPOINT [“executable”, “param1”, “param2”]
ENTRYPOINT command param1 param2 (shell 中执行)
EXPOSE 申明镜像内容器占用的端口
ENV 指定环境变量
ADD 复制文件到镜像内
如果文件为压缩包会自动解压到指定目录下
COPY 将文件复制到镜像,推荐使用COPY
VOLUME 创建数据卷挂载点
USER 指定容器运行时的用户
WORKDIR 在容器内部创建目录,RUN, CMD, ENTRYPOINT, COPY , ADD 这些指令会在该目录下执行
LABEL 为镜像添加标签。一个 LABEL 就是一个键值对
EG: LABEL version=”1.0″
SHELL 制定运行shell的shell类型

编写Dockerfile
[root@baiyongjie ~]# vim /tmp/Dockerfile
FROM centos:6.9

MAINTAINER misterbyj@163.com

RUN yum install -y tree vim telnet
RUN sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
RUN echo "root:baiyongjie" | chpasswd

ADD systeminit.sh /systeminit.sh
ENV systeminit /systeminit.sh
RUN chmod u+x /systeminit.sh

EXPOSE 22

CMD /systeminit.sh && top
使用docker build构建镜像
[root@baiyongjie ~]# docker build -t registry.baiyongjie.com/baiyongjie/centos:0.1 /tmp/
Sending build context to Docker daemon 271.4 kB
Step 1/9 : FROM centos:6.9
---> fca4c61d0fa7
Step 2/9 : MAINTAINER misterbyj@163.com
---> Using cache
---> d16913d0841f
Step 3/9 : RUN echo "root:baiyongjie" | chpasswd
---> Using cache
---> 189ea8717dcb
Step 4/9 : COPY systeminit.sh /systeminit.sh
---> Using cache
---> 729d328d3389
Step 5/9 : ENV systeminit /systeminit.sh
---> Using cache
---> 061e0d917050
Step 6/9 : RUN chmod u+x /systeminit.sh
---> Using cache
---> d5f15e6069dc
Step 7/9 : EXPOSE 22
---> Using cache
---> 413536acfe6b
Step 8/9 : CMD /etc/init.d/sshd start
---> Running in fc0ffe8f19f1
---> ab2cd577e1d6
Removing intermediate container fc0ffe8f19f1
Step 9/9 : CMD /systeminit.sh && top
---> Running in 2ca10943f832
---> 0a9856f98b89
Removing intermediate container 2ca10943f832
Successfully built 0a9856f98b89

查看镜像
[root@baiyongjie ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.baiyongjie.com/baiyongjie/centos 0.1 0a9856f98b89 5 seconds ago 195 MB

启动镜像
[root@baiyongjie ~]# docker run -itd -p 5022:22 --name centos6-9 registry.baiyongjie.com/baiyongjie/centos:0.1
1750714444f1512a0d18af51027fcb28d54173863dc48853643cd93262425e6b

查看容器
[root@baiyongjie ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1750714444f1 registry.baiyongjie.com/baiyongjie/centos:0.1 "/bin/sh -c '/syst..." 24 seconds ago Up 23 seconds 0.0.0.0:5022->22/tcp centos6-9
bde5daf7b7b6 registry:2 "/entrypoint.sh /e..." 5 weeks ago Up 5 weeks 0.0.0.0:443->5000/tcp registry
点赞

发表评论

邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据