win10下docker desktop:使用dockerfile基于CentOS:8创建可以使用vim的镜像

使用dockerfile基于CentOS:8创建可以使用vim的镜像

问题描述:Win10家庭版系统,使用docker desktop,基于centos:latest版本创建镜像时报错。

PS C:\Users\cong\Desktop> docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       latest    5d0da3dc9764   8 months ago   231MB

我的centos镜像是直接pull的默认latest版本,应该是centos:8。
在桌面的mydocker文件夹中创建一个centos_dockerfile.txt文件:

FROM centos:latest
MAINTAINER  zcong <[email protected]>

RUN yum install -y vim
WORKDIR /usr

CMD /bin/bash

根据dockerfile文件自定义centos:8镜像,要求:
1.默认登陆路径为/usr
2.可以使用vim命令(需要另外安装的第三方包)
运行代码:

PS C:\Users\cong\Desktop\mydocker> docker build -f ./centos_dockerfile.txt -t centos:latest

报错:

Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

百度了下原因,是因为centos:8版本更新后没有了appstream,镜像源出现点问题。

我找到的所有办法都需要在Linux系统下操作/etc/yum.repos.d这个文件夹,然而我的电脑是win10系统,根本没有这个文件夹!

思考了一下,dockerfile文件的那几行命令,其实就是以centos:8为父镜像,创建一个可以使用vim命令的新镜像,创建过程执行RUN yum install -y vim下载对应的包。上一步骤就是在这一命令处报错,告诉我centos:8找不到urls

好吧,那我就照着当前latest版本的centos镜像,搞一个有urlscentos:8出来。

网上已经有很多解决方法,这里采用https://blog.csdn.net/xiaocao_debug/article/details/123041407的方法将yum设置为阿里云的镜像源。

基于centos创建一个容器c1:

PS C:\Users\cong\Desktop\mydocker> docker run -it --name=c1 centos:latest /bin/bash

进入到c1容器中,找到并/etc/yum.repos.d文件夹:

[root@1eae32974792 /] cd /etc/yum.repos.d

创建文件备份:

[root@1eae32974792 yum.repos.d] mkdir backup
[root@1eae32974792 yum.repos.d] mv *repo backup/
[root@1eae32974792 yum.repos.d] ls -lh
total 4.0K
drwxr-xr-x 2 root root 4.0K May 16 05:40 backup

下载阿里云文件:

[root@1eae32974792 yum.repos.d] curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2600  100  2600    0     0   2610      0 --:--:-- --:--:-- --:--:--  2607
[root@1eae32974792 yum.repos.d]# ls -lh
total 8.0K
-rw-r--r-- 1 root root 2.6K May 16 05:41 CentOS-Base.repo
drwxr-xr-x 2 root root 4.0K May 16 05:40 backup

更新源里面的地址:

[root@1eae32974792 yum.repos.d] sed -i -e "s|mirrors.cloud.aliyuncs.com|mirrors.aliyun.com|g " /etc/yum.repos.d/CentOS-*
[root@1eae32974792 yum.repos.d] sed -i -e "s|releasever|releasever-stream|g" /etc/yum.repos.d/CentOS-*

生成缓存:

[root@1eae32974792 yum.repos.d] yum clean all
[root@1eae32974792 yum.repos.d] yum makecache

至此构建了一个更新了yum阿里源的容器c1,下面将容器c1转换为镜像mycentos:8

PS C:\Users\cong\Desktop> docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED       STATUS                  PORTS     NAMES
1eae32974792   centos:latest   "/bin/bash"              5 hours ago   Up 8 minutes                      c1

PS C:\Users\cong\Desktop> docker commit 1eae32974792 mycentos:8
sha256:1a595a092da8e52a1a44141c972c11490997279dc9d3dae2860a1a42663ce016

PS C:\Users\cong\Desktop> docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mycentos     8         1a595a092da8   7 seconds ago   317MB
centos       latest    5d0da3dc9764   8 months ago    231MB

基于新创建的镜像mycentos:8,修改dockerfile.txt文件并根据该文件自定义镜像zc_centos:1.0

FROM mycentos:8
MAINTAINER  zcong <[email protected]>

RUN yum install -y vim
WORKDIR /usr

CMD /bin/bash
PS C:\Users\cong\Desktop\mydocker> docker build -f ./centos_dockerfile.txt -t zc_centos:1.0

看一下镜像是否成功创建:

PS C:\Users\cong\Desktop\mydocker> docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
zc_centos    1.0       3eec5f13e8be   44 seconds ago   402MB
mycentos     8         1a595a092da8   14 minutes ago   317MB
centos       latest    5d0da3dc9764   8 months ago     231MB

根据新创建的zc_centos:1.0镜像创建容器zc_c1

PS C:\Users\cong\Desktop\mydocker> docker run -it --name=zc_c1 zc_centos:1.0

进入容器zc_c1,验证能否使用vim命令:

[root@86d20d7fd932 usr] cd ~
[root@86d20d7fd932 ~] vim a.txt

成功进入vim编辑界面。

你可能感兴趣的:(centos,docker,vim)