docker容器的自定义修改并重新构建镜像

前言

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

自定义修改

在这里,我手动做了两个修改,一个是安装pylint,一个是更新pip

自定义修改容器

提交更改


docker commit -m="install pylint" -a="chauncey" tf chauncey/tf 

如上命令,将所有对容器的操作都保存至自定义镜像chauncey/tf 中。

测试效果

  1. 停止当前容器

docker stop tf
  1. 使用自定义镜像创建容器

docker run --gpus all -itd --name tf --rm -v ~/Project:/root/Project  chauncey/tf  
  1. 使用VS code远程连接,观察pip版本和pylint的安装情况。

pip版本和pylint的安装情况

如上图,我们发现pip已经是最新的版本。而且细心小伙伴会发现,连接容器时以及没有了install Dev container的提示了,这说明我们的VS code也已经预设安装进了镜像。

📅 2020-01-02
Vscode无缝连接docker支持与主机文件同步

为什么需要?

我们在上一篇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

操作流程

首先安装两个插件dockerRemote Development

VScode的docker插件

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

Remote Development

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

VScode in Container

然后安装Python插件和调试工具,修改tf.py文件


import tensorflow as tf

print("hello tensorflow")

点击右边的运行图标,成功输出。

run tensorflow

打开主机文件

docker主机文件同步

发现修改也已经同步,Over,现在可以愉快的写代码了。

📅 2020-01-02
Ubuntu使用阿里云加速docker pull

使用 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            

Ubuntu使用阿里云加速docker pull

大功吿成!!

📅 2019-12-19