zoukankan      html  css  js  c++  java
  • 五:DockerFile制作Docker镜像

     

    阅读(933)

    一:DockerFile一种被Docker程序解释的脚本,DockerFile是由一条条的命令组成的,每条命令对应linux下面的一条命令,Docker程序将这些DockerFile指令再翻译成真正的linux命令,其有自己的书写方式和支持的命令,Docker程序读取DockerFile并根据指令生成Docker镜像,相比手动制作镜像的方式,DockerFile更能直观的展示镜像是怎么产生的,有了DockerFile,当后期有额外的需求时,只要在之前的DockerFile添加或者修改响应的命令即可重新生成新的Docke镜像,避免了重复手动制作镜像的麻烦,具体如下:

    1.1:准备环境:

    [root@docker-server1 opt]# mkdir /opt/dockerfile/nginx -p
    [root@docker-server1 opt]# cd /opt/dockerfile/nginx/ #针对要构建的镜像分别创建一个保存DOckerfile的目录

    1.2:编写Dockerfile:

    [root@docker-server1 nginx]# vim /opt/dockerfile/nginx/Dockerfile #生成的镜像的时候会在当前目录查找Dockerfile文件,so名称不可写错,且D必须大写
    
    #My Dockerfile
    #"#"为注释,类似于shell
    #除了注释之外的第一行,必须是From xxx (xxx是基础镜像)
    From centos  #第一行先定义基础镜像,后面的本地有效的镜像名,如果被动没有会从远程仓库下载,很重要
    
    #维护者的信息
    MAINTAINER Jack.Zhang 123456@qq.com
    
    ###########################其他可选参数##################################################
    #USER  #指定该容器运行时的用户名和UID,后续的RUN命令也会使用这面指定的用户执行
    #WORKDIR /a
    #WORKDIR b  #指定工作目录,最终为/a/b
    #VOLUME 设置主机挂载卷
    #########################################################################################
    
    #执行的命令,将编译安装nginx的步骤执行一遍
    RUN  rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
    RUN yum install -y vim wget tree  lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
    ADD nginx-1.8.1.tar.gz  /tmp/
    RUN cd  /tmp/nginx-1.8.1  && ./configure  --prefix=/usr/local/nginx && make && make install
    RUN cd /usr/local/nginx/
    ADD nginx.conf  /usr/local/nginx/conf/nginx.conf
    RUN useradd   nginx -s /sbin/nologin
    RUN ln -sv /usr/local/nginx/sbin/nginx  /usr/sbin/nginx 
    RUN echo "test nginx page" >  /usr/local/nginx/html/index.html
    EXPOSE 80 443  #向外开放的端口,多个端口用空格做间隔,启动容器时候-p需要使用此端向外映射,如: -p 8081:80,则80就是这里的80
    CMD ["nginx"] #运行的命令,每个Dockerfile只能有一条,如果有多小则只有最后一条被执行
    #如果在从该镜像启动容器的时候也指定了命令,那么指定的命令会覆盖Dockerfile构建的镜像里面的CMD命令,即指定的命令优先级更高,Dockerfile的优先级较低一些

    1.3:构建过程:

    [root@docker-server1 nginx]# cp /usr/local/nginx/conf/nginx.conf .
    [root@docker-server1 nginx]# cp /usr/local/src/nginx-1.8.1.tar.gz . #当前目录需要存在构建docker镜像中使用的所有文件
    [root@docker-server1 nginx]# docker build -t jack/mynginx:v4  /opt/dockerfile/nginx/   
    #jack/mynginx:v4

    1.4:构建结束:

    1.5:将通过Dockerfile构建的镜像启动一个容器:

    [root@docker-server1 nginx]# docker images
    REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
    jack/mynginx            v4                  92b0d6fb92ab        10 seconds ago      534.5 MB
    jack/nginx-test-image   latest              9a05d0ab900e        About an hour ago   518.3 MB
    jack/nginx-test-image   V1                  26169a42251e        About an hour ago   518.3 MB
    docker.io/nginx         latest              cc1b61406712        12 days ago         181.8 MB
    centos                  latest              778a53015523        10 months ago       196.7 MB
    [root@docker-server1 nginx]# docker run --name myimage-nginx1 -d -p 8081:80 jack/mynginx:v4
    bf026f7e96b0a8f15377e75309b3338c36b505368ba13e1904fcf6bf0f2a4b16

    1.6:访问宿主机的8081端口验证web界面:

    1.7:yum版本的构建DockerFile:

    from centos
    MAINTAINER Jack.Zhang 123456@qq.com
    run rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
    run yum install nginx -y
    run echo "daemon off;" >> /etc/nginx/nginx.conf
    run echo "test nginx page" >  /usr/share/nginx/html/index.html
    expose 80
    expose 443
    cmd ["nginx","ls"]

    1.8:从yum构建的镜像启动一个容器:

    [root@docker-server1 yum-nginx]# docker run  --name yum-nginx -d -p 8082:80 jack/mynginx:v5  nginx
    0408e6f892a9c71e28d55162cc2efc7a2f69d72da8f1ae5dc2da5322efa38a31

    1.9:访问通过yum安装nginx构建的docker镜像启动的实例:

  • 相关阅读:
    jmeter在Windows下安装(含插件安装)
    Jenkins中agent的使用
    Jenkins自动化测试脚本的构建
    Python在Linux下编译安装
    Jenkins项目构建运行
    VIM不正常退出产生的swp文件
    SSI服务器端包含注入
    【强网杯2019】随便注
    判断网站CMS
    windows基础
  • 原文地址:https://www.cnblogs.com/dengbingbing/p/12325075.html
Copyright © 2011-2022 走看看