docker最重要的概念:
- image就像程序里的类,container就像程序里的实例。可以每次运行都新建一个实例,也可以一直用同一个实例。每次都新建实例保证运行环境永远一致。用同一个实例保证前后具有连续性。当然也可以把实例commit为新的版本,然后每次都用新版本的images。
- 解决了计算环境的问题就剩文件的问题。只要我们每次运算后的结果保存的文件里,就不会随着container消失而消失。
1.希望的几点功能:
* 容器和本机共享文件夹,这样可以在本机上编辑文件
* 容器可以运行本机编辑过的python文件
* 容器可以打开jupyter notebook ,并远程编辑调试
* 容器在运行过程中可以打开过个窗口(exec实现),因为我们可能还在同一个容器需要执行其他命令。
* 比如运行jupyter notebook 的同时用python 运行文件。
* 容器的互联。尤其是数据库容器和计算容器的链接。
2. 常用命令总结:
- 显示镜像 docker images
- 显示容器 docker ps -a
- 搜索镜像 docker search image_name
- 下载镜像 docker pull image_name
- 显示docker状态docker stats
- 容器拷贝文件,如果有共享文件夹就不需要这个了。
docker cp <containerId>:/file/path/within/container /host/path/target
- 进入正在运行的容器
- 1:
docker attach id
刚方法进入之后,exit退出就会导致容器stop,最好不要使用
- 2:
docker exec -it containerID /bin/bash
这个命令exit退出,ok容器还在运行
- 1:
- start 和run 的区别
第一次启动用docker run
,之后用docker start
.
docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。
- 清理容器
杀死所有正在运行的容器
docker stop$(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)
删除所有镜像
docker rmi $(docker images -q)
- 参数总结:
- --user root | 用root 账号登录容器
- -P |使用随机端口,使用docker ps -a查看端口
- -p 7777:8888 |容器的8888映射的本机的7777
- -v /e/docker:/home/work |把本机的docker目录挂载到容器的work下,只有登录容器root账号才能成功挂载。关于docker toolbox 的设置:
- --rm |容器退出时即删除。数据不会丢失。
- --name test |重命名为test这样操作起来不需要id了,不能重复
- --privileged=True |文件夹访问被拒绝,可以用特权启动。
3. docker toolbox
win10,7,8,mac都是利用docker toolbox开一个虚拟机,然后在虚拟机里打开容器,所以ip地址是虚拟机的ip地址。
- docker toolbox 查询ip
docker-machine ip default
- 查看环境变量
docker-machine env
- 重启
docker-machine restart default
- 离线安装
https://blog.csdn.net/qdslg/article/details/84934432
4.images的迁移
docker save -o tensorflow.tar.gz 271ae1439df0
docker load -i tensorflow.tar.gz
- load之后一般没有名称和tag,需要手动添加:
docker tag containerID username/tensorflow:v1
5.docker在centos的离线安装
tar xzvf docker.tar.gz
sudo cp docker/* /usr/bin
sudo dockerd &
6.关于selinux
- 还有一种临时方案
setenforce 1 开启
setenforce 0 关闭
7.Docker 加速器值得拥有
一行一个,适用于docker toobox ,加速器地址可以是阿里云提供的也可以是daocloud提供的
docker-machine ssh default
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速器地址 |g" /var/lib/boot2docker/profile
exit
docker-machine restart default
7