在 Windows 中为 WSL 安装 Docker 并使用阿里云容器镜像服务

最近准备入手一套 NAS ,于是乎决定先研究一下大名鼎鼎的 Docker 容器

安装 Docker 到 WSL 中

在第一步安装的时候就被坑了一把(安装了这么多软件没想到啊…)

因为我选择的 Linux 版本是 Ubuntu 18.04 ,于是乎我就直接在 Ubuntu 中 apt 尝试安装,结果发现服务根本起不起来。而且报错的原因还是什么 系统内核需要升级,吓得我赶紧 apt remove…

后面我才发现只需要在官网下载 Windows 版本,然后在里面直接选择开启 WSL 即可,搞来搞去结果搞得更复杂了

首先说明一个大坑,仅支持 window10 专业版系统,或是已安装 docker for window10,否则无法启动 daemon 守护进程,就算一步一步到最后没有任何报错,也无法启动 docker。我一直侥幸以为能够找到万能网友的解决方法,或者是自己能够尝试得到解决方案,后来发现除了上面条件满足才能实现。

下面整理一下安装步骤

  1. Docker 官网下载 Windows 版本
  2. 安装过程中一直点击下一步即可
  3. 安装完成需要注销或者重启电脑
  4. 重启完成后会看到右下角就有一个可爱的小海豚,右键 setting > General 将所有选项全部勾选
  5. Resources > WSL INTEGRATION 中看下有没有你安装的 Linux 版本,如果没有请执行 6 ;如果已经有了你所安装的版本,直接点击勾选再重启即可
  6. 如果没有出现你的 Linux ,打开 Powershell ,执行 wsl –set-default Ubuntu-18.04 2 ,这里的 Ubuntu-18.04 是你安装的 Linux 版本,可以使用 wsl -l -v 查看

这是进入你的 wsl 试试 docker ps 如果没有报错就证明可以使用了

在右下角右击图标时也可以切换 windows docker 和 Linux docker

使用阿里云的镜像容器服务

先注册一个阿里云的服务

注册完成后在 实例列表 > 默认实例 > 访问凭证 中先设置一个登录密码,然后在下面可以看到一串命令,在此之前还需要在你的 WSL 中执行一条命令

1
sudo ln -s /mnt/c/Program\ Files/Docker/Docker/resources/bin/docker-credential-desktop.exe /usr/bin/docker-credential-desktop.exe

这句话是让 docker-credential-desktop.exe 可以在 Linux 中执行

然后再执行阿里云中的命令

1
sudo docker login --username=******** registry.cn-hangzhou.aliyuncs.com

这一串 * 号表示的是你的登录名,自行修改即可

输入你自己创建的密码即可提示登录成功

阿里云中创建你的私人仓库

依次点开 容器镜像服务 > 实例列表 > 镜像仓库 点击创建镜像仓库,依次填写内容即可

随后点击右边的管理按钮即可查看各种使用命令

登录阿里云 Docker Registry

$ sudo docker login –username=mrxun**** registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

从 Registry 中拉取镜像
1
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/xxxx/xxxx:[镜像版本号]
将镜像推送到 Registry
1
2
3
$ sudo docker login --username=**** registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xxxx/xxxx:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/docker_learning_test/my_first_docker:[镜像版本号]

请根据实际镜像信息替换示例中的 [ImageId] 和 [镜像版本号] 参数。

选择合适的镜像仓库地址

从 ECS 推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于 VPC 网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为 Registry 的域名登录。

示例

使用 “docker tag” 命令重命名镜像,并将它通过专有网络地址推送至 Registry。

1
2
3
4
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

使用 “docker push” 命令将该镜像推送至远程。

1
$ sudo docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816