当前位置: 首页 > news >正文

docker(1) -- centos镜像

1. 前言

我在WSL中运行的系统是ubuntu2024,并安装了docker,想要在docker中运行一个centos的系统。

2. 下载并运行镜像

# 下载centos最新版镜像
$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
# 下载完成后查看本地镜像,很奇怪,这里时间写着3年之前
$ docker images
centos                  latest    5d0da3dc9764   3 years ago   231MB
# 启动容器
$ docker run -it --name=centos --hostname=centos centos
# 此时已进入容器环境,可以看一下centos的版本是8.4.2105
[root@centos /]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
# 定义一个变量,下一条指令会使用
[root@centos /]# minorver=8.4.2105
# 更换清华源,”-i.bak“表示修改前创建备份文件
[root@centos /]# sed -e "s|^mirrorlist=|#mirrorlist=|g" -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/$minorver|g" -i.bak /etc/yum.repos.d/CentOS-*.repo

3. 构建常用镜像

  1. 编写Dockerfile文件。
# 基于centos镜像
FROM centos

# 元数据,定义维护者和联系方式
LABEL maintainer="xflm" email="xflm@123"

# Dockerfile变量,_USER和_PW是新建用户名和密码,我在wsl中的用户为xflm,在/etc/passwd中可以看到UID/GID是1002
ARG _USER=xflm _PW=xxxx _UID=1002 _GID=1002

# 修改软件源为清华源
RUN sed -e "s|^mirrorlist=|#mirrorlist=|g" -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/$(cut -d' ' -f4 /etc/redhat-release)|g" -i.bak /etc/yum.repos.d/CentOS-*.repo

# 添加环境变量,LANG用于支持中文显示
ENV LANG=C.UTF-8

# 修改系统时区信息,貌似仅需要修改/etc/localtime,不需要echo "Asia/Shanghai" > /etc/timezone
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 更新源信息并安装常用命令
RUN yum makecache \
 && yum update -y \
 && yum install -y nc net-tools tree ctags gcc gcc-c++ gdb make unzip sudo \
 && yum clean all

# 设置root密码,添加用户,赋予sudo权限,指定密码,修改UID/GID,centos中sudo的添加方式和ubuntu不同
RUN echo "root:${_PW}" | chpasswd \
  && useradd -lmU -u ${_UID} -s /bin/bash ${_USER} \
  && groupmod -g ${_GID} ${_USER} \
  && echo "${_USER}:${_PW}" | chpasswd \
  && echo -e "\n## Allow xflm to run any commands anywhere\nxflm\tALL=(ALL)\tALL" >> /etc/sudoers

# 拷贝VI的配置文件,root用户和新用户都拷贝一份,此处“/root”不能使用“~”代替,此处vi是centos自带的,配置文件名不同于vim
COPY virc /root/.vim/virc

# /etc/profile.d/*.sh会被/etc/profile自动调用
COPY alias.sh /etc/profile.d/alias.sh

# 指定容器起来的工作目录
WORKDIR /home/${_USER}

# 指定容器启动时的用户
USER ${_USER}

# 必须使用--chown指定用户否则拷贝的文件还是root权限
COPY --chown=xflm:xflm virc /home/${_USER}/.vim/virc
COPY --chown=xflm:xflm tools /tools
  1. alias.sh tools virc参考wsl(6) – 安装docker章节的内容。
  2. 编译并运行镜像。
# 编译后的镜像命名为centos_base
$ docker build -t centos_base .
# 编译完成后查看镜像
$ docker images
...
centos_base             latest    b0128b4cacbd   51 seconds ago   542MB
...
# 运行镜像
$ docker run -it --rm --name=centos --hostname=centos centos_base:latest
# 此处已进入容器镜像
[xflm@centos ~]$ ls

上一篇:wsl(6) – 安装docker
下一篇:docker(1) – centos镜像
目录:文章合集

参考

CentOS-8.4系统配置国内清华镜像站yum源

相关文章:

  • C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)
  • Android主流架构模式对比分析
  • 7-字符串
  • RabbitMQ 集群降配
  • 自定义对象处理请求参数
  • Vue3 + ECharts 数据可视化实战指南
  • unity npc射线检测碰撞
  • Java技术专题-Java Agent探针的技术介绍(1)
  • DocumentByParagraphSplitter:LangChain4j中文本处理的“智能切割刀”
  • 防火墙双机热备(主备分担)
  • 神经外科手术规划的实现方案及未来发展方向
  • Java 反射机制详解
  • 4.好事多磨 1
  • 流量密码破解:eBay店铺首页改版后的黄金展示位
  • HTML,CSS,JavaScript
  • 如何有效运营Instagram,降低封号风险?
  • Java的继承:方法;属性?
  • 使用 Google Firebase 控制台和 ESP8266 NodeMCU 的物联网控制 LED
  • 如何理解std::promise和std::future
  • 【conda activate无效】 conda: error: argument COMMAND: invalid choice: ‘activate‘
  • 知名猎头公司创始人兼首席执行官庄华因突发疾病逝世,享年62岁
  • 一个多月来上海交大接连“牵手”三区,在这些方面进行区校合作
  • 广东省人大教科文卫委原主任委员梁万里被开除党籍:退休后受贿仍不知止
  • 中国人民抗日战争暨世界反法西斯战争胜利80周年纪念活动标识发布
  • 西藏日喀则市拉孜县发生5.5级地震,震感明显部分人被晃醒
  • 菲律宾举行中期选举