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

Docker Desktop 安装 Linux(告别传统的虚拟机VMware)

Docker Desktop 安装 Linux(告别传统的虚拟机VMware)

本文讲解主要是可以用自己的 windows 系统安装 Docker 启动 CentOS 7 容器

再使用本地 SSH 工具连接到 CentOS 系统,用于小伙伴们学习 Linux 系统,学习生产环境的项目发布、CI CD等内容,告别笨重的 VMware

本文包含了部分 docker 命令和 Linux 命令,但不用急,copy 一下我写进博客的命令就可以运行了

本文皆可以使用本地的网络进行,不需要梯子(不同的镜像源下载、安装文件)

本文几个内容分别为:

  • 安装 Docker Desktop、安装 WSL 、配置 Docker 镜像源、设置 Docker Desktop 中文

  • Docker 安装 CentOS 7 镜像、运行 CentOS 7 容器

  • CentOS 7 安装 SSH、本机使用工具连接到 CentOS 容器

一、安装 Docker Desktop、安装 WSL 、配置 Docker 镜像源、设置 Docker Desktop 中文

Docker 作为一种轻量级的容器化技术,为开发者提供一致的运行环境,使得软件可以在不同平台上无缝运行,极大地提升了开发和部署的效率。无论是本地开发、测试,还是大规模的云端部署,Docker 都能显著降低环境配置的复杂性,减少依赖冲突问题。

1、安装 Docker Desktop

可以直接点击这个链接下载:Docker Desktop 下载

如果链接失效,可以去官网点击下载:Docker Desktop 官网

下载好之后一直点击下一步就好了,不需要其他的任何操作,安装好后需要重启电脑

重启好后会提示我们下载 WSL2 ,但直接在 CMD 里面根本下载不了(网络问题),可以看后续步骤,通过镜像下载安装

在这里插入图片描述

2、安装 WSL2

WSL(Windows Subsystem for Linux)是微软为 Windows 系统提供的一种兼容性层,允许用户在 Windows 上运行 Linux 发行版(如 Ubuntu)。它为开发者提供了一个轻量级的解决方案,可以在不安装虚拟机或双系统的情况下,直接在 Windows 系统中运行 Linux 应用程序和工具。

有梯子的朋友可以直接去 GitHub 下载最新的:Releases · microsoft/WSL

没有的朋友看后续操作:我们先找一个 GitHub 的镜像源进去选 WSL2 最新的版本,右键复制链接(不想找最新的,后面的链接可以复制一下):https://github.com/microsoft/WSL/releases/download/2.5.10/wsl.2.5.10.0.x64.msi

在这里插入图片描述

打开 GitHub 文件加速网站:Github文件加速

如果下面链接没过期,可以直接点击下载:https://proxy.pipers.cn/https://github.com/microsoft/WSL/releases/download/2.5.10/wsl.2.5.10.0.x64.msi

在这里插入图片描述

下载完之后打开也是直接点下一步点到头就好了,等待 WSL2 安装完再打开 Docker Desktop 就可以使用了

3、设置中文(非必须)

也是需要再 GitHub 中进行下载的:Releases · asxez/DockerDesktop-CN

没有梯子的朋友看上面安装 WSL 的部分,这里就不重复搜索步骤了,放一个可以下载的版本(需要对应自己 Docker Desktop 的版本):https://proxy.pipers.cn/https://github.com/asxez/DockerDesktop-CN/releases/download/4.45.0/app-Windows-x86.asar

在这里插入图片描述

找到我们 Docker 安装目录下的 \frontend\resources 文件夹,并定位到其中的 app.asar 文件,替换掉 app.asar 文件(需要把我们下载的文件名字改为 app.asar

在这里插入图片描述

4、配置 Docker 镜像源

Docker 镜像源经常失效,所以我配置了很多:

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://do.nark.eu.org","https://dc.j8.work","https://dockerproxy.com","https://gst6rzl9.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","http://mirrors.ustc.edu.cn/","https://mirrors.tuna.tsinghua.edu.cn/","http://mirrors.sohu.com/"]
}

配置镜像源:

在这里插入图片描述

查看是否配置完毕,打开 CMD 输入docker info,Registry Mirrors 是我们刚才配置的就没问题了

在这里插入图片描述

二、Docker 安装 CentOS 7 镜像、运行 CentOS 7 容器

1、Docker 安装 CentOS 7 镜像

我们后续操作都在 CMD 命令行完成,Docker Desktop 太慢了:

# 拉取 CentOS 7 镜像
C:\Users\Admin>docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7
docker.io/library/centos:7

等待安装完后可以去 Docker Desktop 查看,或者使用docker images查看我们的镜像

C:\Users\Admin>docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       7         be65f488b776   3 years ago   301MB

在这里插入图片描述

2、运行 CentOS 7 容器

运行容器,linux 的端口尽量使用 22,因为 SSH 默认的是 22 端口,如果改了这里,那么后续还得改 SSH 的配置

docker run --name my-centos -v D:\docker\centos:/home/centos --privileged -p 8099:22 --ulimit memlock=-1 -m 8g -td centos:centos7 /usr/sbin/init

# 运行容器
C:\Users\Admin>docker run --name my-centos -v D:\docker\centos:/home/centos --privileged -p 8099:22 --ulimit memlock=-1 -m 8g -td centos:centos7 /usr/sbin/init
a4242078dc52bb15bbc1f7a7549e2d927c17cc72d63c26fafc9920be46d93c77# 查看容器运行状态,可以再 Docker Desktop 的容器那一栏查看
C:\Users\Admin>docker ps
CONTAINER ID   IMAGE            COMMAND            CREATED         STATUS         PORTS                                     NAMES
a4242078dc52   centos:centos7   "/usr/sbin/init"   7 seconds ago   Up 6 seconds   0.0.0.0:8099->22/tcp, [::]:8099->22/tcp   my-centos

命令内容解释:

参数解释
docker runDocker 命令,用于创建并启动一个新的容器。
--name my-centos为容器指定一个名称 my-centos,便于后续管理。
-v D:\docker\centos:/home/centos数据卷挂载。将宿主机的目录 D:\docker\centos 挂载到容器内的 /home/centos 目录,实现数据共享和持久化。
就是说你在 CentOS 容器的 /home/centos 目录下,写了一个文件,那么在本机的 D:\docker\centos目录下也可以看见那个文件,反之亦然
--privileged特权模式。赋予容器几乎所有的宿主机内核能力,允许其进行高级系统操作(如运行 systemd)。安全风险高,生产环境慎用。
-p 8099:22端口映射。将宿主机的 8099 端口映射到容器内部的 22 端口(SSH 服务端口),以便通过 SSH 访问容器。
--ulimit memlock=-1资源限制。设置进程可锁定内存大小为无限制,常用于运行需要大量固定内存的应用程序(如数据库)。
-m 8g内存限制。限制容器最多只能使用 8GB 的物理内存。
-td选项组合。
-t: 分配一个伪终端(pseudo-TTY)。
-d: 在后台运行容器(分离模式)。
centos:centos7指定用于创建容器的镜像名称和标签(CentOS 7)。
/usr/sbin/init容器启动命令。启动系统的初始化进程,这是为了在容器内正常使用 systemctl 等系统管理命令所必需的。

三、CentOS 7 安装 SSH、本机使用工具连接到 CentOS 容器

1、进入我们的容器内部(CentOS 7)

# 下面出现 # 就代表我们进入了 Linux 的环境
C:\Users\Admin>docker exec -it my-centos bash
[root@1e03b7aa6415 /]#

2、修改 yum 镜像源、安装 net-tools 和 vim

按照下面一步一步走就好了,我们首先需要配置yum镜像源,后续下载 SSH 的操作需要使用yum

net-tools 提供了 ifconfig, netstat 等网络诊断工具

vim 则是一个功能强大的文本编辑器,用于修改 SSH 的配置文件(比自带的 vi 好用点)

#repos 目录
$ cd /etc/yum.repos.d/# 在更换 YUM 源之前,建议先备份系统自带的 YUM 源配置文件,以防需要恢复原配置。
$ cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak# 使用 curl 替换成阿里云提供的 CentOS 7 Base 源配置文件
$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 清理原有缓存
$ yum clean all# 重新生成缓存
$ yum makecache# 更新Yum 
$ yum update -y# 安装 net-tools 和 vim
$ yum install -y net-tools vim# 验证 net-tools
$ which ifconfig# 验证 vim
$ which vim

vim常用命令

命令说明执行模式
i进入插入模式(开始编辑)命令模式下执行
ESC退出插入模式,返回命令模式插入模式下执行
:wq保存文件并退出命令模式下执行
:q退出(仅当文件未修改时)命令模式下执行
:q!不保存强制退出命令模式下执行
/关键词搜索关键词,搜索完后,
n:查找下一个匹配项。(n 代表 next)
N:查找上一个匹配项。
输入:noh:清除所有搜索匹配项的高亮显示
命令模式下执行
u撤销上一步操作命令模式下执行
Ctrl + f向下翻一页命令模式下执行
Ctrl + b向上翻一页命令模式下执行

3、安装 OpenSSH 服务器

下载 SSH 并修改配置

# 安装ssh服务
$ yum install -y openssh-server openssh-clients openssh
# 安装密码
$ yum install -y passwd# 检查ssh安装情况
$ yum list installed | grep openssh-server# 使用 vim 修改 /etc/ssh/sshd_config 文件
$ vim /etc/ssh/sshd_config
# 查看配置 PermitRootLogin 配置
$ grep -E "^#?PermitRootLogin" /etc/ssh/sshd_config
# 允许 root 用户通过 SSH 登录(PermitRootLogin yes)(默认关闭,需要打开,通过 vim 或者执行下面代码修改)
$ sed -i 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
# 禁用 DNS 反向解析,防止 SSH 连接很卡(UseDNS no)(默认开启,需要关闭,通过 vim 或者执行下面代码修改)
$ sed -i 's/^#*UseDNS.*/UseDNS no/' /etc/ssh/sshd_config
# 监听端口:需要和启动的端口对应(Port 22)(默认开启 22 端口,如果没有改执行容器时的端口,这里就不需要改)
# 开启用户名密码验证关键字(PasswordAuthentication yes)(默认开启,不需要改)# 如果感觉 vim 查看或修改很麻烦,可以复制一份文件放到 linux 的 /home/centos 目录下(docker 配置的 -v 后面的参数,是docker容器与宿主机共享数据的目录),这样我们就可以在我们 windows 的 D:\docker\centos 目录下看见对应文件了,再用你自己喜欢的编辑器修改后,再把 /etc/ssh 目录下的 sshd_config 文件替换掉就好了# 生成 SSH 主机密钥
# 切换到 SSH 配置目录
$ cd /etc/ssh
# 生成所有密钥(自动设置正确权限)
$ ssh-keygen -A# 修改systemctl
$ mv /usr/bin/systemctl /usr/bin/systemctl.old
$ curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
$ chmod +x /usr/bin/systemctl# 启动 sshd
$ systemctl start sshd 
# Linux 配置开机启动,但 Docker 容器不是完整的 Linux 系统,所以这种 Linux 开启启动方案,在 Docker 容器启动后并不能自启动,解决办法我方后面,这里只是让 SSH 能完整的工作
$ systemctl enable sshd# 检查端口监听,确认 SSH 是否开启,有值代表 SSH 监听了 22 端口
$ netstat -tulnp | grep :22# 配置密码  需要确认两次 且密码不可见
$ passwd# 测试本地 SSH 连接,输入yes,输入密码,输出 SSH内部连接测试成功 就代表成功了
$ ssh -o ConnectTimeout=2 localhost echo "SSH内部连接测试成功"# 退出 docker 容器内部
$ exit# 按照上面一步一步来就可以了 贴一个我成功的案例
[root@a4242078dc52 ssh]# ssh -o ConnectTimeout=2 localhost echo "SSH内部连接测试成功"
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:ulfMtPZ7yOws5KE7D16GGdyKBPOmpY/mBHBmtKXvsy4.
ECDSA key fingerprint is MD5:41:ef:37:9d:e4:11:63:a0:87:db:16:d3:52:0b:9a:25.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
root@localhost's password:
SSH内部连接测试成功

4、本机使用工具连接到 CentOS 容器(FinalShell)

输入主机号、端口、用户名和密码点击确认

在这里插入图片描述

连接成功

在这里插入图片描述

5、解决 Docker 容器重启(停止再启动)后 SSH 不能自启动的问题

docker容器在启动的时候,会自动执行/root/.bashrc文件,所以,环境变量需要配置在该文件内,这样镜像启动时,可自动执行该文件,使环境变量生效。

# 编辑 /root/.bashrc 文件
$ vim /root/.bashrc
# 在.bashrc末尾添加如下代码
$ systemctl start sshd

.bashrc 修改后的完整代码

# .bashrc# User specific aliases and functionsalias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
fisystemctl start sshd

测试:可以看见停止再启动后,端口 22 被监听了,用 FinalShell 也能直接连接

docker 重启命令(下面的命令是停止后启动):docker restart my-centos

C:\Users\Admin>docker stop my-centos
my-centosC:\Users\Admin>docker start my-centos
my-centosC:\Users\Admin>docker exec -it my-centos bash
[root@a4242078dc52 /]# netstat -tulnp | grep :22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      24/sshd
tcp6       0      0 :::22                   :::*                    LISTEN 

参考文档:

使用 Docker Desktop 安装 Centos 系统-CSDN博客

http://www.xdnf.cn/news/20197.html

相关文章:

  • Date、BigDecimal类型值转换
  • 残差去噪扩散模型
  • 字节跳动OmniHuman-1.5发布:单图+音频秒变超真实视频,AI数字人技术再升级
  • HOT100--Day13--104. 二叉树的最大深度,226. 翻转二叉树,101. 对称二叉树
  • Docker入门到精通:从零基础到生产部署
  • 如何在路由器上配置DHCP服务器?
  • 本体论中的公理与规则——从经典逻辑到神经符号融合的演进
  • Hive on Tez/Spark 执行引擎对比与优化
  • AI浪潮下,人类创造力的“危”与“机”
  • 2026届大数据毕业设计选题推荐-基于大数据旅游数据分析与推荐系统 爬虫数据可视化分析
  • JAVA基本文件操作
  • 【74页PPT】MES简介(附下载方式)
  • TensorFlow 面试题及详细答案 120道(101-110)-- 底层原理与扩展
  • C++笔记之软件设计原则总结
  • Lua > Mac Mini M4安装openresty
  • 基于Transformer 实现车辆检测与车牌识别(一)
  • disable CASCADE主键失败 ORA-2297 And ORA-2433
  • MCAP :机器人数据容器的全面实践指南
  • 区块链是什么
  • UE5 图表、函数与宏的区别与选择(蓝图折叠功能详解)
  • 【iOS】push 和 present
  • 什么时候用no,什么时候用non,什么时候用not?
  • 京东商品属性API数据解析:颜色、尺寸与材质
  • 【代码随想录算法训练营——Day4】链表——24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II
  • 操作系统基本概念.1
  • Day 47 注意力热图可视化
  • 工作后的总结和反思4
  • SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)
  • 使用Shell脚本实现Linux系统资源监控邮件告警
  • 永磁同步电机 FOC 控制中 d、q 轴杂谈与角度偏移影响