1. 镜像操作
1.1 拉取镜像
docker pull [镜像名/id]
1.2 删除镜像
docker rmi [镜像名/id]
1.3 搜索镜像
docker search [条件] 内容
2. 创建容器
2.1 非守护线程创建容器(离开后自动停止)
dcoker run -it [镜像名/id]
2.2 守护线程创建容器(离开后后台运行)
docker run -itd [镜像名/id] [/bin/bash 系统镜像需加上]
3. 进入一个正在运行的容器
docker exec -it [容器名/id] [/bin/bash 系统镜像需加上]
或者
docker attach [容器名/id]
4. 打包容器
docker commit -m "容器描述" -a "作者描述" [容器名/id] 镜像名:标签名
5.容器普通操作
5.1 运行容器
docker container start [容器名/id]
5.2 停止容器
docker container stop [容器名/id]
5.3 删除容器
docker container rm [容器名/id]
5.4 保存容器
docker save -o [xxx.tar 保存文件名] [容器名/id]
5.5 通过文件加载容器
docker load -i [xxx.tar 保存文件名]
6. 状态操作(查看容器状态)
docker ps -a
或
docker container ls -a
7 复制文件
7.1 容器向宿主机复制文件
docker cp test:/root/.jupyter/jupyter_notebook_config.py ~/data/
- test是容器名
7.2 宿主机向容器复制文件
docker cp /home/ethan/data/jupyter_notebook_config.py tf:/root/.jupyter/jupyter_notebook_config.py
- tf为容器名
8. 其他命令
自动尝试重启
docker container run --name neversaydie -it --restart always alpine sh
强制删除容器
docker container rm [container name] -f
始终重新启动 --restart always
docker container run -d --name always --restart always alpine sleep 1d
除了docker守护线程开启情况自动重启 --restart unless-stopped
docker container run -d --name unless-stopped --restart unless-stopped alpine sleep 1d
容器的web服务
docker container run -d --name webserver -p 80:8080 nigelpoulton/pluralsight-docker-ci
-p参数将Docker主机的端口映射到容器内。本例中,将Docker主机的80端口映射到了容器内的8080端口。这意味着当有流量访问主机的80端口的时候,流量会直接映射到容器内的8080端口。之所以如此是因为当前使用的镜像,其Web服务监听了8080端口。这意味着容器启动时会运行一个Web服务,监听8080端口。
使用docker container ls命令可以查看当前运行的容器以及端口的映射情况。端口信息按照host-port:container-port的格式显示,明确这一点很重要。
检查容器信息
docker container inspect [name]
导出镜像
docker save [镜像名] > [导出后的文件名]
载入镜像
docker load < [文件名]
7.3 指定某个GPU运行
nvidia-docker run --gpus='"device=6,7"' --runtime=nvidia --name mm_prj -itd -v /home/jxl:/home/jxl vistart/mmdetection /bin/bash
7.4 短暂测试退出即删除容器 --rm
docker run -it --rm --name test dxaibiaoji:1.8-stl-f0 /bin/bash
7.5 如果运行容器遇到错误需要清理缓存
cd /proc/sys/vm/
echo 1 > drop_caches
7.6 设置容器内存的大小
--shm-size=32G