前言

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。近年来,Docker方式越来越受欢迎,本文针对Docker ubuntu的镜像操作进行了详细阐述:包括两种方式。

方式 1

1. 制作基础镜像
1) 在宿主机上安装 docker 框架:
2) 拉基础镜像:
sudo docker pull ubuntu:18.04
3) 查看各个下载基础镜像:
sudo docker images ubuntu:18.04
2. 制作专属镜像:anaconda + requirements.txt
1) 进入镜像:启动容器
sudo docker run -i -t ubuntu:18.04 /bin/bash
2) 更改 apt-get 下载软件镜像源:换成国内阿里云镜像源(镜像终端)
# 备份原镜像软件源
 mv /etc/apt/sources.list /etc/apt/sources.list.bak
 # 更改镜像为阿里镜像源
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe" >> /etc/apt/sources.list
3) 更新源:(镜像终端)
apt-get update
 apt-get install wget
4) 把本地安装文件上传至 docker ubuntu: (宿主机终端)
# 查看正在运行的容器 id
 sudo docker ps
 # 复制文件至 docker ubuntu 镜像
 sudo docker cp  /home/shichao/workspace/project/defrost/update/second_stage_kafka/v100/carrefour/Anaconda3-2019.10-Linux-x86_64.sh 061095ea358c:/home/anaconda_3.sh
5) 在镜像中下载 anaconda :(镜像终端)
# 下载 anaconda:该版本对应 python3.6
 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Linux-x86_64.sh
 # 安装 anaconda
 bash Anaconda3-5.1.0-Linux-x86_64.sh
 # 过程中全部都选择 yes
 # 使环境变量生效
 source ~/.bashrc
 # 查看是否生效:若出现 conda 4.4.10 则安装配置成功
 conda -V
6) 保存镜像:在保存镜像前保证容器不退出(宿主机终端)
# 查看容器 id (宿主机终端)
 sudo docker ps
 # 按我们的需求更改的容器,我们可以通过命令 docker commit 来提交容器副本 (宿主机终端)
 (base) shichao@DL:~$ sudo docker commit -m "carrefour" -a "shichao" 1683ab3e55f0 shichao/ubuntu:v1
 # 参数解释如下:
 -m: 提交的描述信息
 -a: 指定镜像作者
 1683ab3e55f0:容器 ID
 shichao/ubuntu:v1: 指定要创建的目标镜像名
 # 查看新镜像 shichao/ubuntu:v1
 sudo docker images
7) 退出镜像:容器也退出(镜像终端)
root@b08d897d4b97:/home/files# exit
8) 用新镜像启动一个容器:(宿主机终端)
sudo docker run -t -i shichao/ubuntu:v1 /bin/bash
9) 进入一个正在启动的容器镜像:(宿主机终端)
# 查看容器 id:
 sudo docker ps -a
 # 进入容器 id 为 1683ab3e55f0 的容器
 sudo docker exec -it 1683ab3e55f0 /bin/bash
10)镜像中安装 python 依赖:(镜像终端)
# 拷贝依赖到容器镜像中:(宿主机终端)
 sudo docker cp  /home/shichao/workspace/project/defrost/update/second_stage_kafka/v100/carrefour/requirements.txt 061095ea358c:/home/files/requirements.txt
 # 用 anaconda 自带的 pip 安装 (镜像终端)
 root@061095ea358c:/home/files# pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
 # 返回到 6 进行保存容器
11)提交镜像到仓库:(宿主机终端)
# 登录 https://harbor.arfa.wise-paas.com 与仓库建立联系
 # -u 后是用户名
 # -p 后是密码
 sudo docker login -u **.chang -p Wen** https://harbor.arfa.***.com
 # 本地镜像 shichao/ubuntu:v5 与仓库中 carrefour:v1.0.0 建立对应关系
 sudo docker tag shichao/ubuntu:v5 harbor.arfa.***.com/microservice/carrefour:v1.0.0
 # push 到仓库
 sudo docker push harbor.arfa.***.com/microservice/carrefour:v1.0.0

方式 2 (推荐)

1)在宿主机上安装 docker :
2)应用 APP 目录如下:
project  
     ├── requirements.txt
     ├── Dockerfile
     └── app
         └── app.py
         └── <other .py files>
3)创建 Dockerfile:
touch Dockerfile
4)Dockerfile 内容如下:
FROM ubuntu:18.04
 
 #MAINTAINER jhao104 "j_hao104@163.com"
 #MAINTAINER shichao
 
 RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
 
 RUN apt-get update -y && \  
     apt-get install -y python3-pip python3-dev
 
 WORKDIR /app
 
 COPY ./requirements.txt /app/requirements.txt
 
 RUN pip3 install -r requirements.txt  -i https://pypi.tuna.tsinghua.edu.cn/simple
 
 COPY app/ /app/
 #ADD ./app.zip /
 
 ENTRYPOINT [ "python3" ]
 
 # 启动镜像后启动 app 的命令
 CMD [ "/app/consumer_defrost.py" ]
5)编译生成镜像:
# shichao/ubuntu:v3.0.1 是镜像名称
 sudo docker build -t shichao/ubuntu:v3.0.1 .
6)启动镜像测试:
sudo docker run shichao/ubuntu:v3.0.1
7)提交镜像到仓库:

详细见  [20200303: 制作 Docker ubuntu:18.04 镜像:方式 1]