zoukankan      html  css  js  c++  java
  • Docker定制容器镜像(利用Dockerfile文件)

    1.创建Dockerfile文件

    新建一个目录,在里面新建一个dockerfile文件(新建一个的目录,主要是为了和以防和其它dockerfile混乱 )

    [root@docker01 myfiles]# mkdir centos6.8_dockerfile
    [root@docker01 myfiles]# 
    [root@docker01 myfiles]# cd centos6.8_dockerfile/

    创建dockerfile文件(vim Dockerfile)

    # The dockerfile has Change add sshd services on Centos7.0
    #centos7:latest image
    FROM centos:6.8
    
    
    MAINTAINER xxx,http://www.cnblogs.com/xxx
    
    #Install sshd net-tools
    RUN yum install openssh-server net-tools -y
    RUN mkdir /var/run/sshd
    
    #Set password for root
    RUN echo 'root:xxxxxxx' | chpasswd
    RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    
    #Set history record
    ENV HISTTIMEFORMAT "%F %T "
    
    #Fix sshd service:Read from socket failed: Connection reset by peer?
    RUN ssh-keygen -A
    
    #Change timezone CST
    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    #Open 22 port
    EXPOSE 22
    
    #Auto running sshd service
    CMD ["/usr/sbin/sshd","-D"]

    上述文件内容就是一个dockerfile 常见的命令组合。开头带#号的为注释

    文件解释:
    FROM: 必不可少的命令,从某个镜像作为基。如 FROM <image_name> ,或者 FROM <image_name>:<tag>. 如果不加tag,默认为latest。先从本地镜像仓库去搜索基镜像,如过本地没有,在去网上docker registry去寻找。
    MAINTAINER:标明该Dockerfile作者及联系方式,可忽略不写
    RUN:建立新的镜像时,可以执行在系统里的命令,如安装特定的软件以及设置环境变量。
    ENV:设置系统环境变量(注意:写在/etc/profile里的命令在dockerfile这里会不生效,所以为改成ENV的方式)
    EXPOSE:开放容器内的端口,但不和宿主机进行映射。方便在宿主机上进行开发测试。(如需映射到宿主机端口,可在运行容器时使用 -p host_port:container_port)
    CMD:设置执行的命令,经常用于容器启动时指定的某个操作。如执行自定义脚本服务,或者是执行系统命令。CMD 只能存在一条,如在Dockerfile中有多条CMD的话,只有最后一条CMD生效!

    2.执行build 创建镜像

    使用docker build命令来创建镜像

    [root@docker01 centos6.8_dockerfile]# docker build -t centos_ssh_1_6.8 .
    Sending build context to Docker daemon 15.36 kB
    Step 1/10 : FROM centos:6.8
     ---> 0cd976dc0a98
    Step 2/10 : MAINTAINER xxx,http://www.cnblogs.com/xxx
     ---> Using cache
     ---> 025bdf5382de
    Step 3/10 : RUN yum install openssh-server net-tools -y
     ---> Using cache
     ---> f970cedf0dc6
    Step 4/10 : RUN mkdir /var/run/sshd
     ---> Using cache
     ---> 620754832e8c
    Step 5/10 : RUN echo 'root:xxxxxxx' | chpasswd
     ---> Using cache
     ---> 8bcd6f4ae32b
    Step 6/10 : RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
     ---> Using cache
     ---> b46214833685
    Step 7/10 : ENV HISTTIMEFORMAT "%F %T "
     ---> Using cache
     ---> c18c2102a92e
    Step 8/10 : RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
     ---> Running in 77698b6cfce0
     ---> 0e755b7f8c4a
    Removing intermediate container 77698b6cfce0
    Step 9/10 : EXPOSE 22
     ---> Running in 29ab858378f7
     ---> 3c8c969057c4
    Removing intermediate container 29ab858378f7
    Step 10/10 : CMD /usr/sbin/sshd -D
     ---> Running in 8ebd12375b64
     ---> ff004247b678
    Removing intermediate container 8ebd12375b64
    Successfully built ff004247b678
    [root@docker01 centos6.8_dockerfile]#

    -t 选项来docker build新的镜像以便于标记构建的镜像,. 表示当前目录,也可以指定dockerfile 文件所在目录。

    3.查看镜像列表,并创建容器

    [root@docker01 centos6.8_dockerfile]# docker images
    REPOSITORY                     TAG                 IMAGE ID            CREATED              SIZE
    centos_ssh_1_6.8               latest              ff004247b678        About a minute ago   291 MB
    nginx_diy                      latest              e24d0b283207        About an hour ago    109 MB
    nginx                          latest              34678a414b84        About an hour ago    109 MB
    docker01.lo:5000/nginx         latest              958a7ae9e569        3 weeks ago          109 MB
    nginx                          <none>              958a7ae9e569        3 weeks ago          109 MB
    registry                       latest              9d0c4eabab4d        6 weeks ago          33.2 MB
    swarm                          latest              36b1e23becab        5 months ago         15.9 MB
    centos                         6.8                 0cd976dc0a98        9 months ago         195 MB

    4.创建和查看容器

    [root@docker01 centos6.8_dockerfile]# docker run -d -it --name mycentos centos_ssh_1_6.8
    813171a387c2cc2a2c91ce96815e300c70bf1d42b6bd9e5c83f2d4608a2a2e6b
    [root@docker01 centos6.8_dockerfile]# docker exec mycentos hostname -I
    172.17.0.3 
    [root@docker01 centos6.8_dockerfile]# ssh root@172.17.0.3 date
    Read from socket failed: Connection reset by peer
    [root@docker01 centos6.8_dockerfile]# docker exec mycentos netstat -ntpl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1/sshd              
    tcp        0      0 :::22                       :::*                        LISTEN      1/sshd  

    原文链接:http://www.cnblogs.com/hanyifeng/p/6116067.html

  • 相关阅读:
    700. Search in a Binary Search Tree
    100. Same Tree
    543. Diameter of Binary Tree
    257. Binary Tree Paths
    572. Subtree of Another Tree
    226. Invert Binary Tree
    104. Maximum Depth of Binary Tree
    1、解决sublime打开文档,出现中文乱码问题
    移植seetafaceengine-master、opencv到ARM板
    ubuntu16.04-交叉编译-SeetaFaceEngine-master
  • 原文地址:https://www.cnblogs.com/vijayfly/p/7071217.html
Copyright © 2011-2022 走看看