基础

systemctl start docker   # 启动
systemctl stop docker    # 停止
systemctl restart docker # 重启
systemctl enable docker  # 开机启动服务
systemctl status docker  # 查看运行状态
docker info              # docker信息
docker version
docker system df         # 查看docker各类型文件占用情况

镜像

查看本地镜像列表

docker images

搜索镜像

docker search 镜像名

# 搜索pytorch相关的,并且stars收藏数(点赞)不小于100的镜像
docker search -f stars=100 pytorch

拉取镜像到本地

# 不加tag默认拉取最新
docker pull 镜像名 
docker pull 镜像名:tag

运行镜像

docker run 镜像名:Tag

删除镜像

#删除一个
docker rmi -f 镜像名或镜像ID

#删除多个 其镜像ID或镜像用用空格隔开即可 
docker rmi -f 镜像名或镜像ID 镜像名或镜像ID 镜像名或镜像ID

#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)

#1停止那些已经退出的容器,2删除容器,3删除镜像
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
docker images|grep none|awk '{print $3 }'|xargs docker rmi

#删除none镜像
docker rmi $(docker images -q -f dangling=true)

保存与加载

docker save 镜像名或镜像ID -o 镜像保存位置与名字
docker save pytorch:dev -o /myimg.tar
docker load -i 镜像文件位置

镜像标签

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG

容器

docker ps     # 查看正在运行的容器
docker ps -a  # 查看所有容器,包括停止的

运行容器

# -it 表示 与容器进行交互式启动
# -d 表示可后台运行容器 (守护式运行)
# --privileged 使得容器内的root拥有真正的root权限
# --name 给要运行的容器起的名字  
# -p 表示端口映射 本机端口:容器内端口
# -v 表示目录映射 本级目录:容器内目录
# --gpus 调用gpu
# /bin/bash  交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash

docker run --gpus all -itd --privileged=true --name event-detector -p 8818:8888 -p 2212:22 -v /mnt/disk1/projects/:/project 镜像名:Tag /bin/bash

停止和删除容器

# 停止容器
docker stop 容器名/容器ID

# 删除一个容器
docker rm -f 容器名/容器ID
# 删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
# 删除全部容器 -a 意思为显示全部, -q 意思为只显示ID
docker rm -f $(docker ps -aq)

进入容器

docker exec -it 容器名/容器ID /bin/bash
docker exec -id pytorch-dev bash

退出容器,返回宿主机

# 直接退出 未添加 -d(持久化运行容器) 时执行此参数,容器会被关闭  
exit

# 优雅退出 无论是否添加-d 参数 执行此命令容器都不会被关闭
ctrl + p + q
停止容器
docker stop 容器ID/容器名

重启容器
docker restart 容器ID/容器名

启动容器
docker start 容器ID/容器名

文件拷贝

无论容器是否开启都可以进行拷贝

#从容器内 拷出
docker cp 容器ID/名称:容器内路径  容器外路径

#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称:容器内路径

其他操作

# 查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
docker logs -f 容器ID
docker logs -f --tail=20 容器ID

# 容器随docker服务启动而自动启动
# --restart=always
docker run -itd --name redis-dev -p 8888:6379 --restart=always  redis:5.0.5 /bin/bash

# 不想删容器,又想让旧容器设置开机自启,只需修改其启动配置
docker update --restart=always 容器Id 或者 容器名
docker container update --restart=always 容器Id 或者 容器名

# 更换容器名
docker rename 容器ID/容器名 新容器名

# 查看docker各类型文件占用情况
docker system df
docker system df -v

# 清除缓存和停止的容器,未使用中的镜像
docker system prune

WARNING! This will remove: 
- all stopped containers 
- all networks not used by at least one container 
- all volumes not used by at least one container 
- all dangling images 
- all dangling build cache