公司作为网易风霁视频团队的云服务供应商,为他们定制开发了一套项目外包管理平台为了方便运维管理、资源调度,我们每次升级都是打包成docker镜像,然后push到视频团队的代码仓库中的原来一直比较正常但是最近攀攀(我们公司的一位后台开发小伙),跑过来告诉阳哥,打包了很多次,每次都会有如下类似错误,而且每次还不一样他告诉阳哥,他已经使出洪荒之力了,但是效果不理想,下面我们就来聊聊关于如何制作docker的基础镜像?接下来我们就一起去了解一下吧!
如何制作docker的基础镜像
背景公司作为网易风霁视频团队的云服务供应商,为他们定制开发了一套项目外包管理平台。为了方便运维管理、资源调度,我们每次升级都是打包成docker镜像,然后push到视频团队的代码仓库中的。原来一直比较正常。但是最近攀攀(我们公司的一位后台开发小伙),跑过来告诉阳哥,打包了很多次,每次都会有如下类似错误,而且每次还不一样。他告诉阳哥,他已经使出洪荒之力了,但是效果不理想。
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/universe/f/flite/libflite1_2.1-release-3_amd64.deb Connection failed [IP: 91.189.88.142 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/universe/s/serd/libserd-0-0_0.30.2-1_amd64.deb Connection failed [IP: 91.189.88.152 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/universe/s/sord/libsord-0-0_0.16.4-1_amd64.deb Connection failed [IP: 91.189.88.152 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/universe/libv/libvidstab/libvidstab1.1_1.1.0-2_amd64.deb Connection failed [IP: 91.189.88.152 80]
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/g/gcc-9/gcc-9_9.3.0-17ubuntu1~20.04_amd64.deb Connection failed [IP: 91.189.88.152 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.31-0ubuntu9.2_amd64.deb Connection failed [IP: 91.189.88.152 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
阳哥:你对它做了什么?
攀攀:我百度了上面的错误信息,发现了一条。让在/etc/resolv.conf里面添加上8.8.8.8的递归服务器。还有就是直接apt-get --fix-missing update
阳哥: 然后呢?
攀攀:涛声依旧
阳哥:上面的错误显示Connection failed [IP: 91.189.88.142 80],很明显A记录都出来了,不是递归服务器的问题。一看就是安装过程中源的问题。之前你运气好,一直没出问题,是一个小概率事件,出问题是大概率的事件。
攀攀: 好的,阳哥,我马上百度一下打包的时候如何指定源。
过了半天,攀攀又心急火燎地跑过来,问阳哥。
攀攀:阳哥,阳哥,我设置了下面的内容,现在问题更大了。直接报错了。
此时阳哥心中一阵凉风,飕飕的,阳哥也一时不知道如何应对,但是作为攀攀,清华等人的精神领袖,阳哥得淡定,阳哥得冷静,不能在小弟面前丢面子。
The following packages have unmet dependencies:
software-properties-common : Depends: python3:any (>= 3.3.2-2~)
Depends: python3 but it is not going to be installed
Depends: python3-gi but it is not going to be installed
Depends: python-apt-common (>= 0.9) but it is not going to be installed
Depends: python3-dbus but it is not going to be installed
Depends: python3-software-properties (= 0.96.20.10) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
The command '/bin/sh -c apt-get update && apt-get install --no-install-recommends -y software-properties-common' returned a non-zero code: 100
阳哥看了看,攀攀写的Dockerfile,心中疑惑悠然而生,时间一点点的流失,阳哥的面子一点点的耗费。他索性看了看当前目录中的sources.list, 顿时心中大喜。看来阳哥又要恢复大师风范,和攀攀这位职场新人,面授机宜了。
FROM ubuntu:focal
USER root
COPY ./sources.list /etc/apt/sources.list
RUN apt-get update
RUN apt-get install --no-install-recommends -y software-properties-common
RUN apt-get install --no-install-recommends -q -y \
bzip2 \
ffmpeg \
git \
gcc \
nginx \
postgresql-client \
python3 \
python3-dev \
python3-pip \
python3-venv \
libjpeg-dev \
redis-server \
supervisor && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
错误的sources.list
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
我们常用的ubuntu版本,有三个。上面的Dockerfile 是FROM ubuntu:focal,但是很多时候,职场新人像攀攀,都是直接百度信息后,没有甄别就使用了。而且网上充斥着大量之前ubuntu 16.04中的源信息,所以上面的原因是源和镜像ubuntu:focal不匹配。所以我们在构建镜像的时候,一定要先清楚你的FROM是什么。
ubuntu常用的3大版本
xenial 16.04
bionic 18.04
focal 20.04
下面给出相应的源,方便大家使用:
ubuntu 16.04 配置如下
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse