Linux for Ubuntu 18.04 安装Docker
Docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
Docker的应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
Docker 的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1.快速,一致地交付您的应用程序
2.响应式部署和扩展
3.在同一硬件上运行更多工作负载
Linux for Ubuntu 18.04 安装Docker
官方安装教程:https://docs.docker.com/engine/install/ubuntu/
实践教程:
- 在 Linux 机器上打开一个新的 Shell。
- 使用wget从 https://get.docker.com 获取并运行 Docker 安装脚本,然后采用 Shell 中管道(pipe)的方式来执行这个脚本。
$ wget -qO- https://get.docker.com/ | sh
- 最好通过非 root 用户来使用 Docker。这时需要添加非 root 用户到本地 Docker Unix 组当中。
下面的命令展示了如何把名为 wanji 的用户添加到 Docker 组中,以及如何确认操作是否执行成功。
$ sudo usermod -aG docker wanji
$ cat /etc/group | grep docker
docker:x:999:wanji
如果当前登录用户就是要添加到 Docker 组中的用户的话,则需要重新登录(重启),组权限设置才会生效。
4) 至此 Docker 已经在 Linux 上安装成功。运行下面命令来确认安装结果。
$ docker --version
Docker version 18.03.0-ce, build 0520e24
$ docker-compose --version
docker-compose version 1.20.1, build 5d8c71b
$ docker-machine --version
docker-machine version 0.14.0, build 89b8332
- Docker image
- 将 image(镜像)文件从仓库抓取到本地
docker image pull hello-world
- 列出本机的所有 image 文件。
$ docker image ls
- 删除 image 文件
$ docker image rm [imageName]
- 测试docker,国际惯例
docker run -it hello-world
FAQ
保存原有容器环境
1.停止docker
docker stop [container ID/ name]
2.列举已存在的container
docker ps -l
3.重启某个container
docker restart [name]
4.进入container
docker exec -it [name] /bin/bash
【PS.切忌docker run [image],这样是以这个镜像重新创建一个新的容器,环境恢复为默认】
docker中文社区
https://www.docker.org.cn/
抓取TensorFlow images
docker pull daocloud.io/daocloud/tensorflow:latest
【PS.镜像仓库daocloud.io/daocloud,速度较快】
docker安装TensorFlow2.0 + jupyter lab
https://blog.csdn.net/weixin_41668848/article/details/106625140
(创建新的容器后,可以关闭,但是不能删除。若删除了,配置的环境就清空了。)
更改镜像仓库
https://www.php.cn/docker/447165.html
容器的相关操作
容器的创建、查看、删除
docker run [-it] some-image
创建某个镜像的容器。注意,同一个镜像可以通过这种方式创建任意多个container. 加上-it之后,可以创建之后,马上进入交互模式。
docker ps列出当前运行的容器
docker ps -a
列出所有的容器,包括运行的和不运行的
docker rm container-id
删除某个容器
容器的启动、进入、退出
docker start [-i] [container-id]
启动某个容器,必须是已经创建的。 加上-i 参数之后,可以直接进入交互模式;
进入交互模式之后,怎么退出呢: - 想退出但是保持容器运行,按CTRL+Q+P三个键 - 退出,并关闭停止容器,按CTRL+D或者输入exit再回车
注:Ctrl+P+Q按的时候有时候会不灵,多按几次!
容器的停止、重启: docker stop [container-id] docker restart [container-id]
Docker jupyter lab 服务
创建配置文件
cd /home/wanji/lxy/tensorflow/work #进入work
mkdir config #再建一个文件夹
cd config #进入config
touch config.json #建立一个.json格式的文件
config.json
{
"NotebookApp":{
"ip":"*",
"port":8888,
"password":"",
"open_browser":false,
"token":"",
"allow_root":true
}
}
挂载
docker run -it -p 8888:8888 --ipc=host -v /home/wanji/lxy/tensorflow/work:/work daocloud.io/daocloud/tensorflow:latest --name [container name] /bin/bash
其中:
-it
为直接进入交互式
-p 8888:8888
是把主机的8888端口映射到容器的8888端口
--ipc=host
可以让容器与主机共享内存
--name xxxxx
给容器定义一个个性化名字
-v /home/wanji/lxy/tensorflow/work:/work
可以将主机上的/home/wanji/lxy/tensorflow/work地址挂载到容器里,并命名为/ work文件夹,这样这个文件夹的内容可以在容器和主机之间共享了。因为容器一旦关闭,容器中的所有改动都会清除,所以这样挂载一个地址可以吧容器内的数据保存到本地。 daocloud.io/daocloud/tensorflow:latest
则是镜像.
经过上面的操作,直接进入容器了,用ls命令,可以看到产生了 work文件夹!
安装jupyter lab
pip3 install jupyterlab
work文件
这里你会看到 work文件下,有一个config文件夹。能cd进入work文件下,就证明该容器挂载本地文件成功了。
开启jupyter lab
在work 文件下开启
命令行里有config.json ,相当于一个启动前的预读文件。包含了IP,端口号,密码,token, 等命令.
有了这个config.json后我们就不用每次启动时都要在jupyter lab 后面敲一串 端口号,IP 什么的。省了很多事情。
开启后模式
红色框的链接复制到浏览器打开。
jupyter lab导入tensorflow
容器备份
Q:服务器需要重装,于是将配置好的环境进行备份,后面重新加载。
A:
先通过docker ps
或者docker ps -a
来查看你想备份的容器的id, 然后通过:
docker commit -p [your-container-id] [your-backup-name]
将id为your-container-id的容器创建成一个镜像快照。
接着,你通过docker images就可以查看到刚刚创建好的镜像快照了。
然后,通过:
docker save -o [path-you-want-to-save/your-backup-name.tar]] [your-backup-name]
把那个镜像打包成tar文件,保存到服务器上。 后面就可以把服务器上打包好的tar文件,下载到本地了。
恢复: `
docker load -i [your-backup-name.tar] docker run -d -p 80:80 [your-backup-name]`
docker cannot stop container问题解决
Docker容器在启动时出现异常,删除容器或者暂停容器时出现cannot stop container
sudo aa-remove-unknown
docker stop [container name/id]