1. 程式人生 > >docker自定制鏡像

docker自定制鏡像

ash python 而且 ror oot com 命令封裝 img 概述

概述

很多情況下我們需要自定制鏡像,如果自定制過程中需要下載配置很多包,而且這些包之間還有依賴關系,那麽如果我們手動去操作的話就會很麻煩,正確的做法是把操作的命令封裝到一個文件裏,然後直接執行這個文件就行了,docker提供了這個文件,就是Dockerfile,下面我們用Dockerfile來自定制一個運行在centos環境下的django鏡像


定制過程


1.下載centos鏡像

docker pull centos


2. 下載django-2.1.7源碼包與阿裏雲擴展源epel.repo文件

在/opt目錄下建立一個docker目錄,切換到docker目錄,下載django源碼包與epel.repo文件

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目錄下的文件應該如下

[[email protected] 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

python3 manage.py runserver 0.0.0.0:8000


生成鏡像

生成鏡像使用build命令

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為鏡像名

[[email protected] docker]# ls
centos_django217.tar.gz  Django-2.1.7.tar.gz  Dockerfile  epel.repo  run.sh

docker自定制鏡像