WSL2中使用Docker详细教程
在Windows系统下进行开发时,借助WSL2(Windows Subsystem for Linux 2)来使用Docker,能带来接近原生Linux环境的体验,极大提升开发效率。本教程将一步步指导你在WSL2中安装和使用Docker。
一、安装Docker
方法一:通过Docker Desktop安装(推荐)
- 下载Docker Desktop:访问Docker官方网站的Docker Desktop下载页面 ,下载适用于Windows的Docker Desktop安装程序(Docker Desktop Installer.exe)。
- 安装Docker Desktop:双击下载的安装程序,按照安装向导的提示进行安装。在安装过程中,确保勾选“使用基于WSL 2的引擎”选项。安装完成后,启动Docker Desktop。
- 配置WSL集成:打开Docker Desktop,点击右上角的设置图标(齿轮形状)。在左侧菜单中选择“资源”>“WSL集成”,确保已安装的WSL2发行版被勾选,这样Docker就可以在对应的WSL环境中运行。
验证安装:打开你安装的WSL2发行版终端(如Ubuntu终端),执行以下命令查看Docker版本,验证Docker是否安装成功:
docker --version
如果安装成功,终端会显示Docker的版本信息。你还可以运行一个简单的Docker容器来进一步验证,执行以下命令:
docker run hello-world
如果一切正常,你会看到Docker的欢迎信息,这表明Docker已经在WSL2中正常工作。
方法二:在WSL2发行版中手动安装Docker
更新系统软件包:打开WSL2发行版终端,执行以下命令更新系统软件包列表:
sudo apt update
安装依赖包:安装Docker所需的依赖包,执行以下命令:
sudo apt -y install apt-transport-https ca-certificates curl gnupg lsb-release
添加Docker官方GPG密钥:执行以下命令添加Docker官方的GPG密钥,以确保软件包来源的安全性:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加Docker软件源:不同的Linux发行版,添加软件源的方式略有不同。以Ubuntu为例,执行以下命令添加Docker软件源:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新软件包列表并安装Docker:再次更新软件包列表,然后安装Docker引擎、Docker命令行工具和containerd.io,执行以下命令:
sudo apt update sudo apt -y install docker-ce docker-ce-cli containerd.io
将当前用户添加到docker用户组(可选但推荐):默认情况下,只有root用户可以运行Docker命令。为了避免每次运行Docker命令都需要使用sudo,可以将当前用户添加到docker用户组。执行以下命令,将“你的用户名”替换为你在WSL2中设置的用户名:
sudo usermod -aG docker 你的用户名
添加完成后,需要重新登录或执行以下命令使更改生效:
newgrp docker
验证安装:执行以下命令查看Docker版本,验证Docker是否安装成功:
docker --version
同样,你可以运行
docker run hello-world
命令来验证Docker是否能正常运行容器。
二、使用Docker
拉取镜像
使用docker pull
命令从Docker Hub或其他镜像仓库拉取镜像。例如,拉取官方的Ubuntu镜像,执行以下命令:
docker pull ubuntu
运行容器
以交互模式运行容器:使用
docker run -it
命令可以以交互模式运行容器,进入容器内部的命令行环境。例如,运行刚刚拉取的Ubuntu镜像,并进入其命令行:docker run -it ubuntu bash
在容器内部,你可以执行各种命令,就像在一个真实的Ubuntu系统中一样。当你完成操作后,输入“exit”命令退出容器。
以守护进程模式运行容器:使用
docker run -d
命令可以让容器在后台以守护进程模式运行。例如,运行一个Nginx容器,并将容器的80端口映射到主机的8080端口,执行以下命令:docker run -d -p 8080:80 nginx
此时,Nginx容器在后台运行,你可以通过浏览器访问
http://localhost:8080
来查看Nginx的默认页面。
管理容器
- 列出容器:使用
docker ps
命令可以列出正在运行的容器。如果要列出所有容器(包括已停止的容器),可以使用docker ps -a
命令。 停止容器:使用
docker stop
命令停止正在运行的容器。例如,停止上面运行的Nginx容器,首先通过docker ps
命令查看容器的ID或名称,假设容器名称为“nginx”,则执行以下命令停止容器:docker stop nginx
启动容器:使用
docker start
命令启动已停止的容器。例如,启动刚刚停止的Nginx容器,执行以下命令:docker start nginx
删除容器:使用
docker rm
命令删除容器。注意,只有停止状态的容器才能被删除。例如,删除上面的Nginx容器,执行以下命令:docker rm nginx
构建镜像
如果你有自己的应用程序,并且想要将其打包成Docker镜像,可以通过编写Dockerfile来实现。假设你有一个简单的Node.js应用,其目录结构如下:
my - node - app/ │ ├── app.js ├── package.json └── Dockerfile
在Dockerfile中,你可以定义如何构建镜像,例如:
# 使用官方的Node.js运行时镜像作为基础镜像 FROM node:14 # 设置工作目录 WORKDIR /app # 将package.json和package - lock.json复制到工作目录 COPY package*.json ./ # 安装应用程序的依赖 RUN npm install # 将应用程序的所有文件复制到工作目录 COPY. . # 暴露应用程序的端口 EXPOSE 3000 # 定义容器启动时要执行的命令 CMD ["node", "app.js"]
然后,在包含Dockerfile的目录下,执行以下命令构建镜像,将“镜像名称”替换为你想要的镜像名称,如“my - node - app:v1”:
docker build -t 镜像名称.
推送镜像
如果你想将自己构建的镜像推送到Docker Hub或其他镜像仓库,首先需要在对应的镜像仓库注册账号。然后,使用
docker login
命令登录到镜像仓库。例如,登录到Docker Hub:docker login
按照提示输入用户名和密码。登录成功后,使用
docker push
命令推送镜像。假设你的镜像名称为“my - node - app:v1”,并且你在Docker Hub上的用户名是“你的用户名”,则执行以下命令推送镜像:docker push 你的用户名/my - node - app:v1
注意: 要打开docker desktop,确定设置中已经启用了wsl2集成的docker