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

简介: 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 <zcong@zcongfly.cn>
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 <zcong@zcongfly.cn>
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编辑界面。

目录
相关文章
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
645 76
|
Kubernetes Docker 容器
Kubernetes与Docker参数对照:理解Pod中的command、args与Dockerfile中的CMD、ENTRYPOINT。
需要明确的是,理解这些都需要对Docker和Kubernetes有一定深度的理解,才能把握二者的区别和联系。虽然它们都是容器技术的二个重要组成部分,但各有其特性和适用场景,理解它们的本质和工作方式,才能更好的使用这些工具,将各自的优点整合到生产环境中,实现软件的快速开发和部署。
592 25
|
安全 Linux
CentOS下载ISO镜像的方法
访问CentOS官方网站(https://www.centos.org/download/),在“Downloads”页面找到ISO镜像下载链接,选择所需版本和架构(如x86_64)开始下载。CentOS分为Linux版和Stream版,前者每两年发行一次并提供10年安全维护,后者为滚动更新。旧版本可在Vault(https://vault.centos.org/)下载。建议选择DVD格式镜像,包含完整系统和常用软件。
32511 16
CentOS下载ISO镜像的方法
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
14935 37
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
网络协议 Linux 网络安全
docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
通过上述步骤,您可以有效解决在 Docker 中使用 CentOS 镜像安装 npm 包时遇到的 "npm ERR! code ECONNRESET" 错误。希望这些方法能帮助您顺利进行 npm 包的安装。
1233 26
|
运维 网络安全 文件存储
找不到类似 Docker Desktop 的 Web 管理界面?试试这些开源方案
Docker Desktop 是本地容器化开发的利器,但存在无法通过 Web 远程管理、跨平台体验不一致等问题。为此,推荐几款轻量级、可 Web 化管理的 Docker 工具:Portainer 功能全面,适合企业级运维;CasaOS 集成应用商店和 NAS 功能,适合家庭/个人开发环境;Websoft9 提供预集成环境,新手友好。这些工具能有效提升容器管理效率,满足不同场景需求。
1185 3
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
748 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
缓存 Linux
CentOS-6的iso下载地址镜像yum源
通过上述步骤,您可以成功下载CentOS 6的ISO镜像文件,并配置适用于CentOS 6的YUM源。尽管CentOS 6已经停止更新,但使用这些镜像和YUM源配置,可以继续在需要的环境中使用和维护CentOS 6系统。
8059 20
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
256 10