码峰博客 – 码而思

分享积累从此时此刻开始

Docker安装

Linux

安装

‌安装依赖‌,更新系统并安装必要工具

sudo apt update && sudo apt upgrade -y
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

Ubuntu 中安装 Docker 以及 Docker Compose

sudo apt install docker.io docker-compose

安装完成后,你可以使用以下命令检查安装的版本

docker -v

要 卸载以前的 Docker,请使用以下命令

sudo apt remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc

Windows

windows 下使用 linux 安装docker 环境,并且支持 powershell 支持运行 linux 相关命令。

系统虚拟化

启用虚拟化

任务管理器(CTRL+Shift+Esc), 选择性能,查看CPU虚拟化,确认是否已启用(默认启用)。

启用Hyper-v并开启虚拟任务

按住键盘Win+R,输入control

安装WSL

检验安装

win+R,输入cmd,按回车键

终端中输入命令wsl,查看是否有安装:
若没有安装:

若已经安装:

安装WSL

更新最新安装方式,直接下载安装包双击安装即可,下载地址:
点此下载WSL安装包

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

如果已经安装,可使用如下命令升级

wsl --update

安装 Ubuntu

打开 microsoft store 搜索wsl 选择Ubuntu 22.04.3 LTS 点击免费下载

然后进入安装过程,输入自动以linux用户名

输入自定义用户密码

完成后,查看 Ubuntu 版本

Docker安装

# powershell 中运行 wsl 进入 linux 环境进行 docker 安装 


# 安装依赖‌,更新系统并安装必要工具:
sudo apt update && sudo apt upgrade -y
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

# Ubuntu 中安装 Docker 以及 Docker Compose
sudo apt install docker.io docker-compose

# 安装完成后,你可以使用以下命令检查安装的版本
docker -v

镜像目录调整

问题:

随着pull的镜像增多,C盘空间被很快耗尽。
因为windows使用的是WSL2的版本,所以docker desktop在安装的时候默认创建两个 wsl子系统。
使用命令 wsl -l -v --all 查看

docker-desktop 是存放程序的
docker-desktop-data 是存放镜像的

解决:

删除所有的 image/container/wsl/hyperv 数据:

导出wsl子系统镜像:

wsl --export docker-desktop docker-desktop.tar
wsl --export docker-desktop-data docker-desktop-data.tar

删除现有的wsl子系统:

wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

重新创建wsl子系统:

wsl --import docker-desktop E:\dockerData\docker-desktop\ docker-desktop.tar
wsl --import docker-desktop-data E:\dockerData\docker-desktop-data\ docker-desktop-data.tar

重新运行 docker desktop,然后pull一个镜像,C盘不会变大了。

wsl常用命令

# 查看wsl版本
wsl --version


# 关闭wsl
wsl --shudown
# 查询是否关闭,state显示为stopped
wsl -l -v
# 启动wsl
wsl

# 卸载适用于 Linux 的 Windows 子系统包
wsl --uninstall

# 查看安装的所有linux子系统
wsl --list --verbose

# 进入linux
wsl -d Name(上步查出的名称)
## 直接 wsl 可以进入默认的系统,exit 退出wsl

# 卸载linux子系统
wsl --terminate Name

# 取消注册分发版并删除根文件系统
wsl --unregister Name

# 账号提权
sudo -s  或  su root

wsl 网络配置

使用 wsl 安装的 Ubuntu 系统,局域网其它主机无法访问,需要配置宿主机端口转发。

查看 Ubuntu IP

PS C:\Users\Administrator> wsl hostname -I
172.31.32.124 172.17.0.1



# 也可以进入 Ubuntu 查看
root@STXXC:/mnt/d/360MoveData/Users/Administrator/Desktop# ifconfig

退出 wsl , ping 该ip地址,查看网络连接是否畅通注:要先使用wsl启动Ubuntu

在宿主机上,使用此IP访问,可以直接访问容器。

PS C:\Users\Administrator> ping 172.31.32.124
或者
PS C:\Users\Administrator> curl 172.31.32.124

正在 Ping 172.31.32.124 具有 32 字节的数据:
来自 172.31.32.124 的回复: 字节=32 时间<1ms TTL=64
来自 172.31.32.124 的回复: 字节=32 时间<1ms TTL=64

再根据该ip地址,在windows端的命令行界面,配置ip+端口映射关系注:wsl 重启,Ubuntu IP 会发生变化,重新后重新修改IP端口转发

# listenport=外部宿主机端口
# connectport=内部wsl虚拟机端口
# connectaddress=执行wsl hostname -I 查看的ip地址
# 如下边,将宿主机的 80 8090 转发至 wsl 中的 docker 容器中
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.25.10.171
netsh interface portproxy add v4tov4 listenport=8090 listenaddress=0.0.0.0 connectport=8090 connectaddress=172.25.10.171

至此,局域网中主机即可通过 宿主机 IP + 对应端口 访问docker 容器

参考地址:https://blog.csdn.net/visket2008/article/details/142822361

wsl 使用root登录

wsl 进入 Ubuntu 时,默认使用创建的用户进行登录,部分操作需要使用 sudo -s 提权,可修改为 root 直接登录,免去提权流程

# 编辑 wsl.conf
sudo vi /etc/wsl.conf

# 增加如下内容
[user]
default=root    # 系统登录默认用户

windows 安装包安装

下载地址:阿里云docker下载

https://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/

安装完成后,重启电脑 ,打开 docker 即可

docker 镜像

# 增加镜像地址
vi /etc/docker/daemon.json

# 放入如下内容
{
"registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://noohub.ru",
    "https://huecker.io",
    "https://dockerhub.timeweb.cloud",
    "https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
    "https://5tqw56kt.mirror.aliyuncs.com",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn/",
    "http://mirror.azure.cn/",
    "https://hub.rat.dev/",
    "https://docker.ckyl.me/",
    "https://docker.chenby.cn",
    "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io"
  ]
}


# 重启docker
systemctl restart docker

# 查看docker信息
docker info  
Index