docker常用命令

1 docker安装

从阿里云的Docker CE 镜像源站安装文档

2 docker服务启动与停止

1
2
3
4
service docker start
service docker stop
# 查看服务状态
service docker status

3 查看状态

1
2
3
4
docker ps -a	# 容器,-a表示all, 无-a仅显示正在运行的
# 容器的状态共有 7 种:created|restarting|running|removing|paused|exited|dead
# see: https://www.cnblogs.com/fuyuteng/p/8847331.html
docker images ls # 查看镜像

4 拉取镜像

1
2
docker pull ubuntu:16.04
docker pull anibali/pytorch:cuda-10.0

5从镜像创建容器

1
2
3
4
5
6
7
8
9
10
# 运行镜像,创建容器
docker run -it ubuntu:16.04 <command>

# -p 10022:22 --shm-size 16G,共享内存设置
# 指定端口映射
docker run --privileged --gpus all --shm-size 16G -dit -p host_port:container_port imageid
# 使用 `-d` 参数时,容器启动后会进入后台
# -v 挂载主机目录到容器,如
docker run -it -v /media:/media:ro ubuntu
# ro表示只读

6 运行和进入容器

1
2
3
4
5
6
7
8
9
10
# 启动容器
docker start container_id

# 进入容器
docker attach {Container ID}
# or
docker exec -it {container ID} bash # [ctrl+D]退出后不会终止容器运行

# 退出容器
exit # or ctrl+D

7 提交/删除操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 暂停容器
docker stop <name or id>
# 暂停所有容器,慎用
docker stop $(docker ps -a -q)

# 删除容器,只有先停止容器运行才能删除
docker rm <name or id>
# 删除所有容器,慎用
docker rm $(docker ps -a -q)
# 删除已经停止的容器,慎用
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')

# 删除镜像
docker rmi <image id>
# 删除none镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')

# 提交容器创建镜像
docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]

删除本地镜像注意点:

  1. 删除前需要保证容器是停止的

  2. rm删除容器,rmi删除镜像

  3. 顺序:先删除容器,再删除镜像

8 使用nvidia gpu

必须安装nvidia-container-toolkit

see: https://github.com/NVIDIA/nvidia-docker#ubuntu-16041804-debian-jessiestretchbuster

1
2
3
4
5
6
7
8
9
10
11
12
# Add the package repositories
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

# 使用含CUDA镜像创建容器方式
docker run --gpus all --entrypoint=/bin/bash -it <imageid>
# 如果需要nvcc之类工具,需要额外安装
apt-get install -y cuda-core-8-0 # cuda-8.0

9 其它操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 重命名容器
docker rename 原容器名 新容器名
# 重命名镜像,这似乎不叫重命名,因为原有的名字还是存在的
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)

# 查看镜像详情
docker inspect 镜像ID

# 保存镜像为文件
docker save -o 要保存的文件名 要保存的镜像
# 从文件载入镜像
docker load --input 文件 # or docker load < 文件名
# ref: https://blog.csdn.net/qq_36358942/article/details/79473472

# 挂载宿主机的目录,-v选项
docker run -it -v /media:/media 容器ID

# 查看docker占用磁盘空间
docker system df -v

# 清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无 tag 的镜像),慎用
docker system prune

# 将没有容器使用的Docker镜像也删掉了,慎用
docker system prune -a
------ 本文结束------
赞赏此文?求鼓励,求支持!
  • 本文标题: docker常用命令
  • 本文作者: Jiang.G.F
  • 创建于: 2019年12月20日 - 15时12分
  • 更新于: 2020年03月03日 - 11时03分
  • 本文链接: https://gfjiangly.github.io/docker/docker-cmd.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
0%