场景:

      在docker中使用Dockerfile的方式进行构建自己的镜像时,发现构建的镜像默认使用国外的源,导致使用自己构造的镜像 启动容器后,在容器中安装软件慢的离谱,而且大多数情况下都会因为连接超时而失败,ubuntu中一个简单的vim都安装不了。

      那么,就想这在Dockerfile文件构建镜像的初期,就将新的镜像中的源给替换了。

操作步骤:

第一步:

  创建自己的测试目录:

sudo mkdir test

第二步:

切换到测试目录下,创建Dockerfile文件

cd test
sudo vim Dockerfile

Dockerfile文件的测试内容如下(这里镜像是基于ubuntu16.04的):

FROM ubuntu:16.04
MAINTAINER author "author@126.com"
ADD sources.list /etc/apt/
RUN apt-get update && apt-get install -y vim && apt-get install -y nginx
EXPOSE 80

第三步:

在test目录下创建sources.list文件,并将阿里的源复制到文件中,然后保存文件

sudo vim sources.list

阿里源文件内容(将以下内容复制到sources.list文件中):

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse  
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse  
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse  
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse  

注意源中的xenial是ubuntu16.04这个版本所对应的别名,如果采用其他的,则请替换为对应的别名

至此,准备工作基本上结束,下面就是构建镜像

第四步:

构建镜像,在test目录下,执行以下命令

docker build -t="demo/myubuntu:al16.04" .

执行后,你会看到以下内容

Sending build context to Docker daemon  3.072kB
Step 1/6 : FROM ubuntu:16.04
 ---> 005d2078bdfa
Step 2/6 : MAINTAINER author "author@126.com"
 ---> Using cache
 ---> b1e50471f46b
Step 3/6 : ADD sources.list /etc/apt/
 ---> a6bfbbcbab61
Step 4/6 : RUN apt-get update && apt-get install -y vim && apt-get install -y nginx
 ---> Running in 4e4317e70e06
Get:1 http://mirrors.aliyun.com/ubuntu xenial InRelease [247 kB]
Get:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease [109 kB]
Get:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease [109 kB]
Get:4 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease [107 kB]
Get:5 http://mirrors.aliyun.com/ubuntu xenial/main amd64 Packages [1558 kB]
Get:6 http://mirrors.aliyun.com/ubuntu xenial/restricted amd64 Packages [14.1 kB]
Get:7 http://mirrors.aliyun.com/ubuntu xenial/universe amd64 Packages [9827 kB]
Get:8 http://mirrors.aliyun.com/ubuntu xenial/multiverse amd64 Packages [176 kB]

构建完毕后,使用 命令docker images 查询镜像,你会看到你刚创建的镜像。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
demo/myubuntu        al16.04             8e1742c79939        18 minutes ago      260MB

至此,镜像构建完毕。

第五步:

 测试镜像是否正常使用,因为这个镜像初始化时,已经安装了nginx和vim,因此,此处使用nginx来测试:

docker run -d -p 8081:80 --name testMyubuntu demo/myubuntu:al16.04  nginx -g "daemon off;"

然后在浏览器中访问地址:http://127.0.0.1:8081  ,看到如下界面,表示成功使用容器启动nginx镜像了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐