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

    概述

    很多情况下我们需要自定制镜像,如果自定制过程中需要下载配置很多包,而且这些包之间还有依赖关系,那么如果我们手动去操作的话就会很麻烦,正确的做法是把操作的命令封装到一个文件里,然后直接执行这个文件就行了,docker提供了这个文件,就是Dockerfile,下面我们用Dockerfile来自定制一个运行在centos环境下的django镜像


    ## 定制过程
    ### 1.下载centos镜像 ```linux docker pull centos
    <br>
    ### 2. 下载django-2.1.7源码包与阿里云扩展源epel.repo文件
    在/opt目录下建立一个docker目录,切换到docker目录,下载django源码包与epel.repo文件
    ```linux
    wget https://media.djangoproject.com/releases/2.1/Django-2.1.7.tar.gz
    wget -O epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    

    ### 3. 创建空的Dockerfile和run.sh文件 Dockerfile是存放创建镜像过程中所需命令的文件,run.sh是执行Django的bash脚本

    创建好之后/opt/docker目录下的文件应该如下

    [root@localhost docker]# ls
    Django-2.1.7.tar.gz  Dockerfile  epel.repo  run.sh
    
    

    ### 4. 编写Dockerfile

    这一步是这篇博客的重点

    FROM centos                                    # 指定base image
    MAINTAINER robin                           # 作者名字
    
    ADD epel.repo /etc/yum.repos.d       # 将当前目录的epel.repo文件拷贝到容器的/etc/yum.repos.d目录下
    RUN yum update -y  # 运行命令
    
    RUN yum install -y python36
    RUN yum install -y python36-pip
    RUN pip3 install setuptools
    ADD Django-2.1.7.tar.gz /opt/
    
    WORKDIR /opt/                                 # 进入/opt目录
    RUN mv Django-2.1.7 django           # 运行命令mv
    
    WORKDIR /opt/django                      # 进入/opt/django目录
    RUN python3 setup.py install
    
    WORKDIR /opt
    RUN django-admin.py startproject myproject
    
    ADD run.sh /opt/qishi3dj/run.sh
    WORKDIR /opt/qishi3dj
    RUN chmod 777 run.sh                    # 更改run.sh的权限
    EXPOSE 9090                                  # 声明容器端口
    CMD ["/bin/sh","run.sh"]                    # 容器启动时默认执行的命令
    
    

    ### 5. 编写run.sh ```linux python3 manage.py runserver 0.0.0.0:8000
    
    <br>
    
    ## 生成镜像
    
    生成镜像使用build命令
    
    ```linux
    docker build -t robin/django-217 .
    
    

    ## 启动容器

    后台启动容器,将宿主机的9090端口映射到容器的8000端口

    docker run -d -p 9090:8000  robin/django-217
    
    

    ## 进入容器 查看容器运行状态,找到容器id
    docker ps
    

    以交互模式进入容器

    docker exec -it xxx /bin/bash
    

    查看运行的进程,可以看到

    UID         PID   PPID  C STIME TTY          TIME CMD
    root          1      0  0 15:43 ?        00:00:00 /bin/sh run.sh
    root          6      1  0 15:43 ?        00:00:00 python3 manage.py runserver 0.0.0.0:8000
    root         28      6  4 15:48 ?        00:03:00 /usr/bin/python3 manage.py runserver 0.0.0.0:8000
    root         36      0  0 16:56 pts/0    00:00:00 /bin/bash
    root         49     36  0 16:56 pts/0    00:00:00 ps -ef
    
    
    

    ## 使用

    修改settings.py的ALLOWHOSTS=["*"]
    访问192.168.1.111:9090


    ## 导出镜像 ``` docker save -o centos_django217.tar.gz robin/django-217 ``` -o 指定地址和文件名 robin/django-217为镜像名
    [root@localhost docker]# ls
    centos_django217.tar.gz  Django-2.1.7.tar.gz  Dockerfile  epel.repo  run.sh
    
    
  • 相关阅读:
    串学习笔记
    C深度剖析学习笔记
    记英语单词ag
    树学习笔记
    如何做好项目总结
    易学队第二次团队会议
    易学队第四次团队会议
    易学队第五次团队会议
    易学队第一次团队会议
    易学队第三次团队会议
  • 原文地址:https://www.cnblogs.com/zzliu/p/10685142.html
Copyright © 2011-2022 走看看