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.rhkb.cn/news/35817.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS逆向案例-HIKVISION-视频监控的前端密码加密分析

免责声明 本文仅为技术研究与渗透测试思路分享,旨在帮助安全从业人员更好地理解相关技术原理和防御措施。任何个人或组织不得利用本文内容从事非法活动或攻击他人系统。 如果任何人因违反法律法规或不当使用本文内容而导致任何法律后果,本文作者概不负责。 请务必遵守法律…

SENT接口

文章目录 前言SENT接口简介物理层数据链路层编码方式帧结构消息格式短串行消息格式增强型串行消息格式 CRC校验和CRC4CRC6 错误检测机制 IP 设计结构框图接口设计上板验证 前言 本文参考标准《SAE J2716_201604》。 SENT接口 简介 SENT(Single Edge Nibble Tran…

Qt-搭建开发环境

1.环境搭建 开发工具概述: Qt ⽀持多种开发⼯具,其中⽐较常⽤的开发⼯具有:Qt Creator、Visual Studio、Eclipse. 1.1Qt Creator Qt Creator 是⼀个轻量级的跨平台集成开发环境(IDE),专为使⽤ Qt 框架进…

Odoo18 Http鉴权+调用后端接口

最近在调研Odoo18,包括它的前后端原理、源码等。发现官方的开发文档并不十分实用,比如标题这种简单的实用需求,竟然浪费了一点时间,特此记录。 官方文档:External API — Odoo 18.0 documentation 前提:首…

【第13节】windows sdk编程:GDI编程

目录 一、GDI 概述 二、设备环境概念 三、使用 GDI 绘图对象 四、使用 GDI 坐标系统 五、使用GDI绘图 5.1 输出文字 5.2 画点和线 5.3 画矩形框、圆和多边形 5.4 画位图和图标 5.5 双缓冲技术 六、综合代码示例 一、GDI 概述 Windows 应用程序不支持标准输出函数&am…

离开页面取消请求

前言 上一篇文章我们处理了axios的重复请求问题axios重复请求,今天来说一下如何在离开某个页面的时候将正在发送的请求取消掉 开始 基于上一篇的axios封装,当我们在编写某个页面的请求的时候 import request from /request/index;export const test2…

C++输入输出流第一弹:标准输入输出流 详解(带测试代码)

目录 C输入输出流 流的四种状态(重点) 标准输入输出流 标准输入流 逗号表达式 1. 逗号表达式的基本规则 示例 2. 图片中的代码分析 关键点解析 3. 常见误区 误区 1:逗号表达式等同于逻辑与 && 误区 2:忽略输入…

Z 轴热膨胀系数:PCB 可靠性的关键因素与选材策略

在电子设备小型化与高性能化的趋势下,PCB(印刷电路板)的可靠性成为决定产品寿命的核心因素。其中,Z 轴热膨胀系数(α2/z-CTE)作为板材的关键参数,直接影响多层板的层间结合力、焊点稳定性及整体…

【C++】Virtual function and Polymorphism

《C程序设计基础教程》——刘厚泉,李政伟,二零一三年九月版,学习笔记 文章目录 1、多态性的概念2、虚函数的定义2.1、引入虚函数的原因2.2、虚函数的定义与使用2.3、虚函数的限制 3、抽象类3.1、纯虚函数3.2、抽象类 4、应用实例 更多有趣的代…

图解LLM智能体(LLM Agents):构建与运作机制的全面解析

LLM智能体:构建与运作机制 LLM智能体(LLM Agents)正在迅速普及,似乎逐渐取代了我们熟悉的传统对话式LLM。这些令人惊叹的能力并非凭空而来,而是需要多个组件协同工作。 本文包含超过60张定制插图,将深入探讨LLM智能体的领域、其核心组件以及多智能体框架的工作原理。 文…

自动驾驶背后的数学:特征提取中的线性变换与非线性激活

在上一篇博客「自动驾驶背后的数学:从传感器数据到控制指令的函数嵌套」—— 揭秘人工智能中的线性函数、ReLU 与复合函数中,我们初步探讨了自动驾驶技术中从传感器数据到控制指令的函数嵌套流程,其中提到了特征提取模块对传感器数据进行线性…

W80x使用WM IoT SDK 2.X 开发(二)驱动tft屏幕

一、硬件准备 开发板依然是官方送的w803,屏幕我的是2.4寸的ST7789 二、查看sdk 1、例程 tft的有这4个程序,我这里直接看最简单的polling吧 首先就是创建一个任务,这跟上一篇点亮led创建任务的步骤一样 继续点进去 2、spi初始化 先看初始…

Linux系统编程(四)--进程概念

文章目录 1.基本概念与基本操作1.1 描述进程-PCB1.2 task_struct-PCB的一种1.3 task_struct内容分类1.4 查看进程1.5 通过系统调用获取进程的PID和PPID1.6 PPID(Parent Process ID)1.7 通过系统调⽤创建进程-fork初识fork创建子进程使用if进行分流 2.进程…

从 0 到 1 掌握鸿蒙 AudioRenderer 音频渲染:我的自学笔记与踩坑实录(API 14)

最近我在研究 HarmonyOS 音频开发。在音视频领域,鸿蒙的 AudioKit 框架提供了 AVPlayer 和 AudioRenderer 两种方案。AVPlayer 适合快速实现播放功能,而 AudioRenderer 允许更底层的音频处理,适合定制化需求。本文将以一个开发者的自学视角&a…

linux 命令 cd

以下是 Linux 中 cd 命令的详细用法总结,涵盖基础操作、快捷方式和常见场景: 1. 命令功能 cd(Change Directory)用于切换当前工作目录,是 Linux 文件系统操作中最常用的命令之一。 2. 基本语法 cd [选项] [目录路径…

安卓开发调用本地接口以及设置base_url思路

去年接手pad端开发时曾问过其它组的老安卓一个问题,我们的安卓项目本地开发时能否调用本地接口,回答是否定的。也许是由于通用底座加入的限制,也许是因为太忙了,不想给我解释繁琐的解决方案。 那么在个人PC上玩耍总是能够调用本地…

中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南

目录 背景‌一、环境规划与依赖准备‌1. 服务器规划(3节点集群)2. 系统与依赖‌3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置‌1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置‌4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…

003 SpringCloud整合-LogStash安装及ELK日志收集

SpringCloud整合-LogStash安装及ELK日志收集 文章目录 SpringCloud整合-LogStash安装及ELK日志收集1.安装ElasticSearch和kibana2.Docker安装logstash1.拉取docker镜像2.创建外部挂载目录3.拷贝容器内部文件到宿主机4.修改外部挂载文件5.运行docker容器 3.整合kibana1.进入kiba…

《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用

《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用 《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用内核对象内核对象的定义内核对象归操作系统所有 基于 Windows 的线程创建进程与线程的关系Windows 中线程的创建方…

【Git学习笔记】Git分支管理策略及其结构原理分析

【Git学习笔记】Git分支管理策略及其结构原理分析 🔥个人主页:大白的编程日记 🔥专栏:Git学习笔记 文章目录 【Git学习笔记】Git分支管理策略及其结构原理分析前言一.合并冲突二. 分支管理策略2.1 分支策略2.2 bug分支2.3 删除临…