Docker简介

简而言之,Docker 是一个可供开发者通过容器(container)来构建,运行和共享应用(application)的平台。用容器来部署应用被称为集装箱化(containerization)。

  • Docker 就像一个盒子,里面可以装很多物件,如果需要某些物件,可以直接将该盒子拿走,而不需要从该盒子中一件一件的取。
  • Docker中文社区Docker中文文档

Docker 包括三个基本概念:

  • 镜像(Image)
    • Docker的镜像概念类似于虚拟机里的镜像(比如.ISO文件),是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
    • 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了MySQL或用户需要的其它应用程序。
    • 这里的镜像就如下方虚拟机创建时候使用的镜像类似。这个镜像便于移动,并且这个镜像我们可以交给任何人使用,其他人使用的时候也很方便,只需要将其实例化即可。 在这里插入图片描述
  • 容器(Container)
    • Docker容器是由Docker镜像创建的运行实例,类似VM虚拟机,支持启动,停止,删除等。
    • 每个容器间是相互隔离的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
    • 容器就类似与虚拟机中我们创建好的虚拟机系统,之后我们所有的操作都是在容器中进行的,我们的程序也是运行在容器中。 在这里插入图片描述
  • 仓库(Repository)
    • 镜像便于传播,而仓库就是专门用来传播这些镜像的地方,他有点类似与Github,或者你可以把他看成一个存放各种镜像的镜像商店
    • Docker官方的仓库: 他的服务器处于国外,所以下载速度较慢,不过我们可以通过换源解决。
    • daocloud国内仓库: 国内也有一些优秀的商店,他和Docker官方的仓库的区别类似与Github和Gitee的区别。
    • 网易云镜像中心

本博客主要解决在Windows环境下,快速上手使用Docker的问题,主要会介绍在Windows系统下Docker Desktop的安装,Docker 基础命令,比如说下载镜像、实例化镜像、使用容器、关闭容器、删除容器、使用仓库、创建镜像等模块的使用。其他系统应该除了安装外其他操作都可以通用。

Docker安装(Winodws)

开启 Hyper-V

程序与功能中,启用或关闭 Windows 功能

image-20250428162725009
ecb02f08-dae6-486f-a04d-59bb367bc266

下载 Docker Desktop

Get Started with Docker

image-20250428163024009

打开安装包加载一会后一般会弹出两个选项,在较旧的Windows10或之前的系统会出现如下所示的相关提示。我们把第一个选上,第二个根据需求选择即可。

在这里插入图片描述

而较新的Windows则会出现一个使用wsl2的提示(最少是1903以上,推荐为2004或更高版本),如果使用wsl2则docker的性能会发挥更好。如下图,这里推荐使用WSL2,如果之后安装完成后发生报错可能是WSL2版本比较老,需要更新导致的

image-20250428163938231

换源,使用阿里云

注册一个阿里云阿里云账号。进入管理控制台界面。

进入控制台

image-20250428164255993

进入产品与服务

image-20250428164322730

进入镜像加速器中,获取加速器地址

img

打开安装好的docker的主界面:在设置界面找到Docker Engin,将复制好的加速器地址填入即可

image-20250428164537614
1
2
3
4
5
6
7
8
9
10
11
12
{
"registry-mirrors":[
"仓库地址"
],
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": true
}

github上有个项目:docker_mirror,可以自动检测在你的网络环境下哪个源是最快的

启动Docker

windows下启动docker打开桌面的docker图标启动即可。 启动成功后,在Win + R 输入cmd进入windows命令行界面, 输入docker -v,查看docker版本:

image-20250428164845950

首先我们输入docker run hello-world是否会出现下图所示的提示,如果出现报错,环境配置可能出现了问题。

我在配置时候出现了Docker无法拉取镜像并提示网络超时的问题,这里以我为例子解决一下

image-20250428165752120

命令docker images显示说明images镜像中没有helloworld这个文件

image-20250429082113700

这时我们只需要创建一个daemon.json文件,然后进入这个文件中添加如下内容:

1
2
3
{ 
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}

然后保存退出,并重启docker

另一个错误

image-20250429081800880

运行Docker Desktop,要运行了之后再跑Docker的命令才行!

安装完成Docker后,默认每次开机的时候都会自动启动,但我们也可以手动启动,关闭或者重启Docker

1
2
3
4
5
6
# 启动docker
sudo service docker start
# 重启docker
sudo service docker restart
# 停止docker
sudo service docker stop

汉化 Docker Desktop

下载对应版本的中文语言包

访问 GitHub,下载适用于 Docker Desktop 的中文语言包,链接地址为:DockerDesktop-CN

选择对应你的版本

image-20250429084714943

导航至 Docker 的安装目录,路径默认为:

1
C:\Program Files\Docker\Docker\frontend\resources

在该目录下找到 app.asar 文件,建议先备份原文件,然后将复制的中文语言包中的 app.asar 文件粘贴并替换原有文件。

image-20250429084926061

完成替换后,请关闭 Docker Desktop,然后重新启动该程序。此时,Docker Desktop 应该以中文界面显示。

image-20250429085059211

WSL2安装

WSL(Windows Subsystem for Linux)是微软开发的一项技术,允许用户在Windows系统中直接运行完整的Linux环境,无需虚拟机。通过操作系统级虚拟化,WSL将Linux子系统无缝嵌入Windows,提供原生Linux命令行工具、软件包管理器及应用程序支持。它具有轻量化、文件系统集成、良好的交互性及开发效率提升等优点,消除了Windows与Linux之间的隔阂,尤其适合开发者和需在Windows平台上使用Linux工具的用户。

启用 WSL 功能

  • 打开开始菜单,在开始菜单中点击应用与程序
  • 在应用与程序选项里面,鼠标滚到最底下,点击程序与功能
  • 点击选项启用或关闭 Windows 功能
  • 在弹出的窗口中勾选 虚拟机平台(Virtual Machine Platform) 和 适用于 Linux 的 Windows 子系统。
image-20250428171228273

dos命令自动安装

对于 windows10 版本2004(内部版本19041或更高)及更新版本或者 windows11,可以直接用 dos命令安装

管理员打开 cmd 或者 powershell,依次

1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
image-20250428172741625

启用虚拟机功能

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

WSL 2 设置为默认版本

1
wsl --set-default-version 2

更新 wsl 内核

1
wsl --update

列出发行版本并且选择一个安装

1
wsl --list --online
1
wsl --install -d Ubuntu-24.04
image-20250428172805603

之后使用 wsl.exe -d Ubuntu-24.04 启动

image-20250428173029325

下次想要使用 wsl 的话,在 cmd 或者 powershell 内输入 wsl 命令即可:

img

Windows 下的所有文件都被挂载在了 /mnt 下,在Windows 终端中的任意目录下输入 wsl,即可进入 Linux 对应的路径。

错误修复:

无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限

image-20250429075311855

WSL报告”请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化”

在 启用或关闭windows 功能中,查看是否勾选虚拟机平台

将注册表HKEY_LOCAL_MACHINE

和HKEY_LOCAL_MACHINE

两个键值中ProviderOrder的值从 cbfs6,P9NP,RDPNP,LanmanWorkstation,webclient改为 P9NP,RDPNP,LanmanWorkstation,webclient img

在资源管理器中的 「地址栏」输入\\wsl.localhost 或者 \\wsl.localhost\ 也有概率直接就好了

导出到D盘

注意接下来的操作需要使用 管理员权限的 cmd或pw

首先,查看可用的 WSL 发行版

1
wsl --list --online

查看你的版本

1
wsl -l -v 

关闭ubuntu

1
wsl --shutdown Ubuntu-24.04

导出Ubuntu到指定位置

1
wsl --export Ubuntu-24.04 D:\OtherLanguageSetting\WSL\Ubuntu-24.04\Ubuntu-24.04.tar

取消注册原有的 Ubuntu,注销

1
wsl --unregister Ubuntu-24.04

导入虚拟机到指定位置

1
wsl --import Ubuntu-24.04 D:\OtherLanguageSetting\WSL\Ubuntu-24.04 D:\OtherLanguageSetting\WSL\Ubuntu-24.04\Ubuntu-24.04.tar --version 2

现在在目录下,WSL2 发行版的文件存储在一个 虚拟磁盘映像文件(ext4.vhdx) 中,该文件用于存储整个 Ubuntu-20.04 文件系统,如下图所示:

image-20250429152524713

导入完成后,你可以启动 WSL

1
wsl -d Ubuntu-24.04

添加新用户并设置其管理员权限,需要 root 权限

切换到 root 用户

在 WSL 的 Ubuntu 系统中,使用 su 命令切换到 root 用户:

1
su -

执行该命令后,系统会提示你输入 root 用户的密码。如果你之前没有设置过 root 密码,可以使用以下命令设置:

1
sudo passwd root

按照提示输入当前用户的密码,然后设置新的 root 密码。

添加新用户

1
sudo adduser --allow-bad-names yourname

赋予新用户管理员权限

在 Ubuntu 系统中,管理员权限通常通过将用户添加到 sudo 组来实现。使用以下命令将 ErgouTree 用户添加到 sudo 组:

1
sudo usermod -aG sudo ErgouTree

验证

1
2
3
4
5
# 切换到新用户
su - ErgouTree

# 验证管理员权限
sudo ls /root