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

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

# 更新源信息并安装常用命令,centos默认仅安装了vim-minimal,使用起来有些不便docker镜像本身也不需要文档支持,可以添加--nodocs参数
RUN yum makecache \
 && yum update -y \
 && yum install -y --nodocs vim nc net-tools tree ctags gcc gcc-c++ gdb make unzip sudo \
 && yum clean all

# 设置root密码,添加用户,赋予sudo权限,指定密码,修改UID/GID,centos中sudo的添加方式和ubuntu不同,基于centos的echo需要加"-e",基于ubuntu的不需要,ubuntu会将"-e"也打印出来
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 ${_USER} to run any commands anywhere\n${_USER}\tALL=(ALL)\tALL" >> /etc/sudoers

# 拷贝VI的配置文件,root用户和新用户都拷贝一份,此处“/root”不能使用“~”代替
COPY vimrc /root/.vim/vimrc

# /etc/profile.d/*.sh会被/etc/profile和/etc/bashrc自动调用,而/etc/bashrc会被~/.bashrc调用
COPY alias.sh /etc/profile.d/alias.sh

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

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

# 必须使用--chown指定用户和组否则拷贝的文件还是root权限
COPY --chown=${_USER}:${_USER} vimrc /home/${_USER}/.vim/vimrc
COPY --chown=${_USER}:${_USER} tools /tools

  1. alias.sh tools vimrc参考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源


http://www.kler.cn/a/592778.html

相关文章:

  • FOC——Butterworth (巴特沃斯)数字滤波器(2025.03.18)
  • 【sklearn 04】DNN、CNN、RNN
  • 【工具类】Java的 LocalDate 获取本月第一天和最后一天
  • 鸿蒙NEXT项目实战-百得知识库04
  • 网络爬虫【爬虫库request】
  • Rust学习之实现命令行小工具minigrep(一)
  • 关于HAL库的知识1----MSP函数
  • [解决] PDF转图片,中文乱码或显示方框的解决方案
  • 华为ipd流程华为流程体系管理华为数字化转型流程数字化管理解决方案介绍81页精品PPT
  • gralloc usage flags
  • dns实现主服务器
  • 如何解析返回的商品信息?
  • 深度解析扣减系统设计:从架构到实践
  • HAL库编程知识点---Can.c和Driver_can.c分层开发
  • 【论文阅读】Availability Attacks Create Shortcuts
  • Noe.js 原生 http 模块 vs Express 框架对比
  • c语言基础编程入门练习题
  • 蓝桥杯2023年第十四届省赛真题-子矩阵
  • 基于springboot医疗平台系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 麒麟V10 arm cpu aarch64 下编译 RocketMQ-Client-CPP 2.2.0