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(2) – 启动后修改目录和网络
目录:全部文章合集

参考

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

Docker是一种开源的容器化平台,它可以帮助开发者将应用程序和服务以容器的形式进行打包、分发和部署。而Gluster是一个分布式存储系统,它可以将多个服务器的存储空间整合在一起,形成一个统一的、可扩展的存储池。 CentOS是一种基于Red Hat Enterprise Linux(RHEL)的开源操作系统,它提供了稳定性和安全性,并且具备广泛的应用支持。 Dockerfile是用于构建Docker镜像的脚本文件,它可以定义容器的运行环境、设置启动命令等。 那么,docker-gluster-centos Dockerfile是指在CentOS系统上构建一个包含Gluster分布式存储系统的Docker镜像的脚本文件。 在docker-gluster-centos Dockerfile中,我们可以使用CentOS的官方镜像作为基础镜像,并在此基础上安装和配置Gluster分布式存储系统。可以通过使用适当的软件包管理工具(如yum)来安装Gluster软件包和依赖项。然后,可以使用Dockerfile中的指令来启动和配置Gluster节点、创建Gluster卷以及设置其他必要的参数和选项。 通过构建docker-gluster-centos Docker镜像,我们可以在任何支持Docker的环境中快速部署和运行Gluster分布式存储系统,而无需手动安装和配置。这样可以大大简化Gluster的部署过程,提高运维效率,并且能够实现更加轻量级、可移植和可扩展的存储解决方案。 总而言之,docker-gluster-centos Dockerfile是用于在CentOS系统上构建包含Gluster分布式存储系统的Docker镜像的脚本文件,使得Gluster的部署和运行变得更加简单、可靠和可扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值