本人系统为ubuntu18.04,用于深度学习使用
1 Docker下载
ubuntu版docker下载地址
按照方法一步一步下载即可
帮助手册:https://docs.docker.com/reference/
2 基础命令
2.1 镜像命令
镜像是每个容器的底层,没有镜像无法创建容器
# docker 帮助
docker <IMAGE ID> --help
docker version # 显示docker版本
docker info # 显示docker详细信息
# 查看已安装库
docker images
-a # 历史显示(曾经安过,现在删除了也会显示)
-q # 只显示镜像ID
# 搜索镜像
docker search <IMAGE NAME>
--fiter=STARS=3000 # 搜索下载量(?)大于3000的
# 下载镜像
docker pull <IMAGE NAME>[:tag] #无版本默认最新版
# 例
docker pull ubuntu:18.04 # 下载18.04版本的ubuntu
# 删除对应ID的镜像
docker rmi -f <IMAGE ID>
docker rmi -f $(dockerimages -aq) # 删除全部镜像
2.2 容器命令
# 新建容器并启动
docker run ['可选参数'] <IMAGE NAME>
# 参数说明
--name='Name" # 容器名字 ubuntu01 ubuntu02 区分容器
-d # 后台方式运行
-it # 交互方式运行,进入容器查看内容
-p # 指定容器端口 -p 8080:8080
"""
格式 -p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
"""
# 例1. 交互式启动
docker run -it ubuntu:18.04 /bin/bash # 启动并进入容器,进入ubuntu,可运行linux命令
# 例2. 后台启动
docker run -d <IMAGE NAME>
# tips: 若下载的镜像有版本号,运行时带上版本号,默认运行是latest(最新版)
# 退出容器
exit # 停止并退出容器
Ctrl + P + Q # 退出不停止容器
# 列出所有容器
docker ps # 正在运行的
-a # 正在运行的 + 历史运行的
-n=? # 显示最近创建的容器 -n=1 个数
-q # 只显示容器的编号
# 删除容器
docker rm <CONTAINER ID> # 删除指定容器,不能删除正在运行的程序
docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
# 启动和停止
docker start <CONTAINER ID> # 启动一个或多个已经被停止的容器
docker restart <CONTAINER ID> # 重启一个或多个已经被停止的容器
docker stop <CONTAINER ID> # 停止容器
docker kill <CONTAINER ID> # 强制停止容器
# 查看日志
docker logs
-tf --tail n <CONTAINER ID> # 字符形式显示n条日至信息
# 查看进程信息
docker top <CONTAINER ID>
# 查看镜像和容器数据
docker inspect <CONTAINER ID> # 查看容器内数据 <重要!!!!!>
docker inspect <IMAGE ID> # 查看镜像数据
# 进入当前正在运行的容器
docker exec -it <CONTAINER ID> /bin/bash # 方式一 进入容器后开启新的终端
docker attach <CONTAINER ID> # 方式二 进入正在运行的终端
# 从容器内拷贝到主机
dock cp <CONTAINER ID:容器内路径> <主机目标路径> # 拷贝
# 例
docker cp 6b400aa2c02e:/home/hg.py /home/hgzhg
# 拷贝多个文件较为复杂,可采用挂载方式完成容器和宿主机的自动传输
2.3 挂载
***要点!!!***
2.3.1 容器数据卷介绍
容器之间数据共享,docker容器中产生的数据同步到本地。即为将容器内的目录挂载到Linux上,容器和主机的该目录中所有文件共享,即使关掉容器也可以往内部添加文件。
2.3.2 直接挂载
挂载 -v <宿主机目录>:<容器内目录>
docker run -it -v -p <宿主机目录>:<容器内目录> <IMAGE NAME>
# 例
docker run -it -v /home/hgzhg/test:/home ubuntu:18.04 /bin/bash
将宿主机目录 /home/hgzhg/test 与容器内目录 /home 挂载,内部文件共享。
可使用 docker inspect 查看容器内挂载情况
MOUNTS内会显示挂载信息
2.3.3 具名挂载&匿名挂载
具名挂载 --name=<NAME> -v <容器内目录>
docker run -it --name=<VOLUME NAME> -v /usr/home <IMAGE NAME> # 只有容器内路径 有<VOLUME NAME>
用 docker inspect 查看容器内挂载情况
匿名挂载 -v <容器内目录>
docker run -it -v /usr/home <IMAGE NAME> # 只有容器内路径 无主机路径 无<VOLUME NAME>
用 docker inspect 查看容器内挂载情况
所有docker容器的卷,没有指定目录时都是在 /var/lib/docker/volumes/xxx/_data
挂载后,可以查看所有volume的情况
docker volume ls
只会显示VOLUME NAME没有命名
总结:
-v 容器内路径 # 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机路径::容器内路径 # 指定路径挂载
2.4 Docker快照
保存工作状态
docker commit -m="提交的描述信息" -a="作者" <CONTAINER ID> <MYIMAGE NAME>:[TAG]
# 例
docker commit -a='hgzhg' -m='test' 6b400aa2c02e hgubuntu:1.0 # 镜像名字小写