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深度学习的相关配置

tensorflow

安装NVIDIA驱动

  1. 查看显卡信息

ubuntu-drivers devices
  1. 自动安装显卡驱动

sudo ubuntu-drivers autoinstall
  1. 确认是否安装成功

nvidia-smi

安装docker

安装文档

使用阿里源安装


# step 1: 安装必要的一些系统工具

sudo apt-get update

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安装GPG证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 3: 写入软件源信息

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# Step 4: 更新并安装Docker-CE

sudo apt-get -y update

sudo apt-get -y install docker-ce



# 安装指定版本的Docker-CE:

# Step 1: 查找Docker-CE的版本:

# apt-cache madison docker-ce

#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages

#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages

# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)

# sudo apt-get -y install docker-ce=[VERSION]

tips: 由于使用的是19.10版本,暂时没有对应的源,故手动将step 3切换至19.04

📅 2019-12-20
Ubutnu使用问题记录贴

安装软件未满足依赖关系

安装软件curl时提示以下内容


下列软件包有未满足的依赖关系:

 curl : 依赖: libcurl4 (= 7.64.0-2ubuntu1.2) 但是 7.65.3-1ubuntu3 正要被安装

E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

这是由于版本不符的导致的,可能是以前卸载的时候未卸载干净。所以我们需要使用purge选项来重新卸载一次。


sudo apt-get purge libcurl4

然后重新安装,解决问题!!

Ubutnu安装软件未满足依赖关系

执行bash命令提示bash: /dev/fd/63: 没有那个文件或目录

bash: /dev/fd/63: 没有那个文件或目录

原因:<(…)运算符称为进程替换,是运行命令的一种方式,其输出进入匿名管道。这就是/dev/fd/63。其思想是允许外部命令(这里是bash)将另一个命令输出视为一个文件。通常形式是使用<将伪文件对象重定向到bash的输入流中。

解决方案,使用两个<

解决方案,使用两个<

用户不在sudo列表

别问为什么出现这个问题,,,

解决方法

  1. 重启进恢复模式

  2. 选择root用户

  3. 添加用户至sudo组


adduser username sudo

系统没有设置图标

ubuntu没有设置.png

天哪,为啥我的电脑老是出现些奇怪的问题。

解决方法

  1. -sudo apt update-

  2. sudo apt install gnome-control-center

系统修复设置

📅 2019-12-20
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
篆书转换器版本说明

版本更新(仅显示发布版)

v0.1.0(当前版本)

  1. 新版界面改版

V19.1.20

  1. 调整篆书生成输入框

2.优化篆书生成结果分享功能

V19.1.9

  1. 新增篆书生成颜色选择

  2. 重构代码逻辑

  3. 优化界面显示

V18.12.27

  1. 删除了使用必须先登录的操作

  2. 增加了意见反馈跳转的功能

V18.10.16

  1. 修复高清下载无效BUG

  2. 增加字体库选择时字体的预览效果

  3. 界面优化,缩小字号

V18.9.15

  1. 广告优化

V18.8.28

  1. 完善识别功能

  2. 优化分享功能

  3. 修复关于页面图片不显示的问题

V18.8.24

  1. 新增篆书识别功能

  2. 暂时关闭社区功能

  3. 美化界面

V18.8.15

  1. 新增转换翻转功能

感谢@梦马的反馈建议

  1. 删除一个转换界面

  2. 优化程序响应速度

V18.8.6

  1. 新增社区功能

  2. 美化系统界面

V18.8.2

  1. 优化广告组件的显示

V18.7.17

  1. 新增文言文转换功能

V18.7.10

  1. 删除进入时的模态对话框

  2. 新增广告组件

此后所有的版本将采用新的版本编号规则, 此规则更新为【某年.某月.某日】

V1.8.7-2018/7/4

  1. 修复关于展板乱码BUG

感谢@遥哥传媒的反馈

V1.8.4-2018/6/22

  1. 修复关于界面显示BUG

V1.8.3-2018/6/21

  1. 修复转换界面BUG

V1.8.2-2018/6/20

  1. 更新展板功能,支持图片高清下载和预览

  2. 美化功能导航页面

  3. 简化web页面

V1.8.1-2018/6/4

  1. 再次舍弃了一些暂时没用的页面

V1.8.0-2018/3/23

  1. 舍弃了原转换界面。

  2. 优化了转换效率

  3. 更新了字体库。

V1.7.0-2018/3/11

feature

  1. 美化了程序界面,将意见反馈移至页面-我

  2. 将下载与收藏设置为长按图片操作,兼容低分辨率机型

  3. 在页面-我,增加了一个版本说明页

  4. 新增展板文章页字体大小调节功能,可选择适合手机的最佳展现方式

  5. 更新了输入错误的提示。

BUG

  1. 修复展板输入,字数不动的BUG

📅 2019-12-19
ubuntu安装后需要做的事情

1. 安装chrome


sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub  | sudo apt-key add -

sudo apt update

sudo apt install google-chrome-stable

19年12月18日:现在觉得火狐也不错

2. 安装Shadowsocks

不然美化界面太慢了

3. 美化界面参考链接

安装工具


sudo apt-get update

sudo apt-get install gnome-tweak-tool

sudo apt-get install gnome-shell-extensions

sudo apt-get install  gnome-shell-extension-dashtodock

2018-12-24 14-21-29 的屏幕截图.png

3. 安装搜狗输入法ubuntu 18.04 LTS 安装搜狗输入法

实在是不喜欢默认输入法

4. 换阿里源

1. 先备份源


sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2. 删除原文件


sudo rm -f /etc/apt/sources.list

3. 新建源文件


sudo vi /etc/apt/sources.list

4. 添加内容


deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

2019-03-28T03:03:08.png

📅 2019-12-18
本文记录了在开发Typecho插件过程中遇到的一些常见问题和注意事项。主要包括类名命名规范必须以`_Plugin`结尾,以及在更新插件时需要先禁用插件的重要操作。这些经验总结可以帮助开发者避免踩坑,提高开发效率。
📅 2019-12-14