zoukankan      html  css  js  c++  java
  • docker镜像制作

    基于busybox制作默认执行httpd服务的镜像

    #下载镜像
    [root@docker ~]# docker pull busybox
    
    # 启动镜像   
    [root@docker ~]# docker run --name b1 -it busybox
    
    # 创建html目录
    / # mkdir -p /data/html
    
    # 创建索引页面
    / # vi /data/html/index.html
    
    # 生成新的docker images
    [root@docker ~]# docker commit -p b1
    
    # 打标签
    [root@docker ~]# docker tag e0cc8f6bd590 busybox/httpd:v-0.1
    
    # 查看images默认运行的命令
    [root@docker ~]# docker inspect busybox/httpd:v-0.1 | sed -n '/Cmd/{n;p}'
    
    # 修改默认运行的命令  -a 作者  -p 暂停容器
    [root@docker ~]# docker commit -a 'ray' -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 busybox/httpd:v-0.0
    
    # 运行
    [root@docker ~]# docker run -d --name httpd_1 busybox/httpd:v-0.0
    
    # 查看ip
    [root@docker ~]# docker inspect httpd_1 | grep -n 'IPAddress'
    
    # 访问
    [root@docker ~]# curl 172.17.0.3 

    镜像导入导出

    [root@docker ~]# docker save -o busybox.gz busybox/httpd:v-0.0 
    
    [root@docker ~]# docker load -i busybox.gz

    Dockerfile自制镜像

    [root@docker ~]# mkdir makeImages
    [root@docker ~]# cd makeImages/
    [root@docker makeImages]# vim  Dockerfile 
    FROM busybox:latest
    # MAINTAINER "RAY"
    LABEL <maintainer>=<'ray'> 
    # 环境变量
    ENV <DOC_ROOT>=</data/web/html> 
    <WEB_SERVER_PACKAGE>=<nginx-1.15-2> 
    COPY index.html ${DOC_ROOT:-/data/web/html/}
    COPY yum.repos.d /etc/yum.repos.d/
    # ADD http://nginx.org/download/nginx-1.15.2.tar.gz /usr/local/src 
    # 将tar包展开放至容器/usr/local/src目录下
    ADD ${WEB_SERVER_PACKAGE:-nginx-1.15.2}.tar.gz /usr/local/src 
    # 指定后续操作的工作目录 
    WORKDIR /usr/local/src/ 
    # 在images中创建一个挂载点目录 
    VOLUME /data/html/
    # 为容器打开指定要监听的端口
    EXPOSE 80/udp 80/tcp
    
    # 生成镜像
    [root@docker makeImages]# docker build -t busybox/httpd:v-0.1 ./
    
    # 启动一个容器执行一条命后然后删除容器
    [root@docker makeImages]# docker run --name test --rm busybox/httpd:v-0.1 cat /data/web/html/index.html
    # 查看镜像环境变量  -P 选项 可以使用docker port 查看端口    -e 选项可以在启动容器是设置环境变量
    [root@docker makeImages]# docker run --name test --rm -P busybox/httpd:v-0.1  printenv

     基于centos制作nginx镜像

    FROM centos
    LABEL <maintainer>=<'ray'>  app='nginx'
    ENV BASE_PATH='/usr/local/nginx' 
            NGINX_PKG='nginx-1.12.2'
    RUN yum -y install gcc pcre-devel openssl-devel make
    ADD ${NGINX_PKG}.tar.gz .
    RUN cd ./$NGINX_PKG && 
            ./configure --prefix=$BASE_PATH 
                        --with-http_ssl_module 
                        --with-stream 
                        --with-http_stub_status_module && 
            /usr/bin/make && /usr/bin/make install && 
            /usr/bin/ln -s $BASE_PATH/sbin/nginx /sbin/
    #ADD nginx.conf ${BASE_PATH}/conf/nginx.conf
    EXPOSE 80
    CMD ["/sbin/nginx","-g","daemon off;"]                                        

     **ENTRYPOINT 与CMD相似,但不会被docker run 执行的命令所覆盖。

    如果确定要覆盖ENTRYPOINT的命令,使用 --entrypoint cmd

    **

    FROM centos 
    LABEL <maintainer>=<'ray'>  app='nginx'
    ENV BASE_PATH='/usr/local/nginx' 
        NGINX_PKG='nginx-1.12.2'
    RUN yum -y install gcc pcre-devel openssl-devel make
    ADD ${NGINX_PKG}.tar.gz .
    RUN cd ./$NGINX_PKG && 
        ./configure --prefix=$BASE_PATH 
                --with-http_ssl_module 
                --with-stream 
                --with-http_stub_status_module && 
        /usr/bin/make && /usr/bin/make install && 
        /usr/bin/ln -s $BASE_PATH/sbin/nginx /sbin/
    ADD entrypoint.sh /bin/ 
    EXPOSE 80
    CMD ["/sbin/nginx","-g","daemon off;"]
    ENTRYPOINT ['/bin/entrypoint.sh']

    公有镜像仓库

    quay.io

    daocloud.io

    docker.io                

    ...

  • 相关阅读:
    吴恩达 机器学习笔记
    三个水杯
    架构之美读书笔记05
    架构之美读书笔记04
    架构之美读书笔记03
    架构之美读书笔记02
    架构之美读书笔记01
    《需求工程——软件建模与分析》阅读笔记03
    《需求工程——软件建模与分析》阅读笔记02
    16下学期进度条2
  • 原文地址:https://www.cnblogs.com/ray-mmss/p/10399745.html
Copyright © 2011-2022 走看看