linux运维之Dockerfile(自动创建镜像)

使用dockerfile自动构建镜像:

       类似于ansible剧本,大小几kb

       手动做镜像:大小几百M+

dockerfile 支持自定义容器的初始化命令

dockerfile主要组成部分:

  基础镜像信息        FROM centos:6.9

  制作镜像操作指令    RUN yum install openssh-server -y

  容器启动时执行指令  CMD ["/bin/bash"]

dockerfile常用指令:

  FROM 这个镜像的妈妈是谁?(指定基础镜像)

  MAINTAINER 告诉别人,谁负责养它?(指定维护者信息,可以没有)(不重要)

  LABLE      描述,便签 (不重要)

  RUN  你想让她干啥(在命令前面加上RUN即可)

  ADD  给它点创业资金(会自动解压tar) 制作docker基础的系统镜像

  WORKDIR 我是cd,今天刚化了妆(设置当前工作目录)

  VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)

  EXPOSE 它要打开的门是啥(指定对外的端口)(-p 随机端口)

  CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换)

dockerfile 其他指令:

  COPY        复制文件(不会解压)rootfs.tar.gz

  ENV        环境变量

  ENTRPOINT  容器启动后执行的命令(无法被替换,启容器的时候指定的命令,

会被当成参数)

自动构建镜像:创建dockerfile:

步骤:

(1)[root@docker01 ~]# mkdir /opt/dockerfile

    [root@docker01 ~]# cd /opt/dockerfile

    [root@docker01 dockerfile]# mkdir centos6.9_ssh

    [root@docker01 dockerfile]# cd centos6.9_ssh

    [root@docker01 centos6.9_ssh]# pwd

      /opt/dockerfile/centos6.9_ssh

(2) [root@docker01 centos6.9_ssh]# vim dockerfile      ##名字只能叫dockerfile

      FROM centos6.9

      RUN echo '192.168.15.84 mirrors.aliyun.com' >>/etc/hosts

      RUN curl -o /etc/yum.repos.d/Centos.Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

      RUN yum install openssh-server -y

      RUN service sshd restart

      RUN echo '123456' | passwd --stdin root

      CMD ["/usr/sbin/sshd","-D"]


  (3) [root@docker01 centos6.9_ssh]# docker build -t centos6.9_ssh:v2

            [root@docker01 centos6.9_ssh]# docker images

             centos6.9_ssh    v2        4b646d7d7392    17 seconds ago  301M 

  (4) [root@docker01 centos6.9_ssh]# docker run -d -p 2022:22 centos6.9_ssh:v2

            [root@docker01 centos6.9_ssh]# docker ps -a -l

            [root@docker01 centos6.9_ssh]# ssh [email protected] -p 2022

  ----------------------------------------------------------------------------------

  文字步骤: 自动构建镜像的步骤:

  1. 手动构建一遍

  echo '192.168.15.84 mirrors.aliyun.com' >>/etc/hosts

  curl -o /etc/yum.repos.d/Centos.Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

  yum install openssh-server -y

  service sshd restart

  echo '123456' | passwd --stdin root

  yum install nginx -y

  vi /init.sh

  2.编写dockerfile

  FROM centos:6.9

  RUN yum install openssh-server -y

  CMD ["/bin/bash"]

  3.构建镜像

  docker build -t centos6.9_ssh:v2

  4.测试

  docker run -d -p 2022:22 centos6.9_ssh:v2

解释:

1)docker RUN:相当于 重新开启一个容器。

2)启动一个临时容器时,会覆盖这三个文件:

  /etc/resolv.conf

  /etc/hostname

  /etc/hosts

3)排错步骤:

  [root@docker01 centos6.9_ssh]# docker ps -a -l

  [root@docker01 centos6.9_ssh]# docker logs bdb57de442a4

docker logs bdb57de442a4 : 能够看见容器在创建中出现了什么报错。

====================================================================

你可能感兴趣的:(linux运维之Dockerfile(自动创建镜像))