Docker
共 4 篇文章
前言
在上篇文章中,我们已经实现了VS code的无缝连接docker,却依旧存在着一些问题。比如它需要安装pylint方便调试,但是每次stop 容器之后,重新启动又需要重新安装,不可谓不麻烦。而且我发现它也需要重新安装VS code server,这是一个严重影响生产力的过程。所以目前的需求就变了如何作一些自定义的修改,并让这些修改永久性的保存。那答案当然是自定义的构建镜像啦,它可以让我们在构建的实践使用容器的过程中,将所做的更新持续化保存到自定义镜像。
自定义修改
在这里,我手动做了两个修改,一个是安装pylint,一个是更新pip。

提交更改
docker commit -m="install pylint" -a="chauncey" tf chauncey/tf
如上命令,将所有对容器的操作都保存至自定义镜像chauncey/tf 中。
测试效果
- 停止当前容器
docker stop tf
- 使用自定义镜像创建容器
docker run --gpus all -itd --name tf --rm -v ~/Project:/root/Project chauncey/tf
- 使用VS code远程连接,观察pip版本和pylint的安装情况。

如上图,我们发现pip已经是最新的版本。而且细心小伙伴会发现,连接容器时以及没有了install Dev container的提示了,这说明我们的VS code也已经预设安装进了镜像。
为什么需要?
我们在上一篇Ubuntu深度学习的相关配置中最后讲到,将工作目录下的文件装载到了容器之下,这样我们在主机中编写一个文件,如tf.py。在容器中执行,需要输入以下命令。
docker exec tf python './tf.py'
这样每改一下文件,想要看效果的话,就需要输入以上命令。而且,还不方便调试。然后,我就在想能不能做到像我平常写代码那样,在VScode中,点一下就运行,而且可以调试呢?于是便有了本文。
准备工作
- 安装好VScode并且保证互联网连接正常。然后将工作目录装载到容器的
/root/Project目录下,不然/tmp的文件实在是太乱七八糟了。
docker run --gpus all -itd --name tf --rm -v ~/Project:/root/Project tensorflow/tensorflow:latest-gpu-py3
操作流程
首先安装两个插件docker和Remote Development

上图中可以看到tensorflow的容器已经处于运行中了,然后再打开Remote Development

显示有一个容器待连接,然后选择它,打开容器中的Project文件夹

然后安装Python插件和调试工具,修改tf.py文件
import tensorflow as tf
print("hello tensorflow")
点击右边的运行图标,成功输出。

打开主机文件

发现修改也已经同步,Over,现在可以愉快的写代码了。
使用 Docker 时需要首先下载一个官方镜像,例如 mysql、wordpress。然而由于网络原因,下载一个 Docker 官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务提供了官方的镜像站点,从而加速官方镜像的下载。
登陆阿里云容器镜像服务

由上图可以看到,阿里给我们分配的专享加速域名。
配置docker源
针对Docker客户端版本大于 1.10.0 的用户
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
不过默认没有这个文件的,所以我们需要新建一个
新建daemon.json
sudo mkdir -p /etc/docker
sudo touch /etc/docker/daemon.json
设置源地址
{
"registry-mirrors": ["<your accelerate address>"]
}
重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker

大功吿成!!