docker使用说明
前言
未安装
docker,可参考【Linux】docker安装docker原理介绍,可查看待完成待实践
docker操作都需要sudo权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组(官方文档)
视频学习
- Complete Docker Course - From BEGINNER to PRO! (Learn Containers):不到五小时的视频,主要是操作性介绍,能对
docker使用有着简单的了解,不包含底层原理,笔记仓库,后面的Shipyard和civo,都是远程托管平台,前者免费30天,后者绑信用卡送$250,最便宜的$5/月(有公网IP)
- Complete Docker Course - From BEGINNER to PRO! (Learn Containers):不到五小时的视频,主要是操作性介绍,能对
基础操作
查看状态
- 查看
docker 镜像:sudo docker images - 查看
docker 容器:sudo docker ps - 查看某一容器详细信息:
sudo docker inspect 容器id/容器名称
将镜像变为容器
- 创建并运行容器:
docker run --name containerName -p 80:80 -d imageNamedocker run:创建并运行一个容器--name:给容器起一个名字,比如叫做containerName-p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口-d:后台运行容器imageName:镜像名称,通过sudo docker images查询到的REPOSITORY,如Nginx
- 运行
ubuntu,centos等系统容器时,需要指定-t参数,否则容器启动后,就会变成Exited状态- 例如:
sudo docker run -t --name mycentos -d centos:latest -t:启动一个伪终端
- 例如:
将容器变为镜像
sudo docker commit <CONTAINER ID> <REPOSITORY:TAG>- 例如:
sudo docker commit 94b09ba29874 123456.bak:latest
- 例如:
将镜像打包
即将指定镜像保存成 tar 归档文件
sudo docker save -o <归档文件名称> <IMAGE ID>- 例如:
sudo docker save -o 123456.tar.gz 6810c1248c62
- 例如:
导入docker镜像
即导入
docker save保存的归档文件sudo docker load < <归档文件名称>- 例如:
sudo docker load < 123456.tar.gz
- 例如:
删除 docker 镜像
sudo docker rmi <REPOSITORY:TAG>- 例如:
sudo docker rmi 123456.bak:latest
- 例如:
从容器中拷贝文件至本地
sudo docker cp <容器名称或ID>:<容器内文件路径> <本地主机目标路径>- 例如:
sudo docker cp my-container:/app/data.txt /tmp
- 例如:
从本地拷贝文件至容器
sudo docker cp <本地文件路径> <容器名称或ID>:<容器内目标路径>- 例如:
docker cp /tmp/data.txt my-container:/app
- 例如:
使用bash进入容器操作
- 创建容器并进入
sudo docker run -it --name containeName imageName bash- 例如:
sudo docker run -it --name mycentos centos bash
- 例如:
- 进入已经运行的容器
sudo docker exec -it [容器名称] bash- 例如:
sudo docker exec -it mycentos bash
- 例如:
实际问题与解决
是否可以修改镜像内容?
不能修改
原镜像,只能通过将原镜像变成容器,对容器修改后,保存为新镜像用到了再写,
具体操作如下
docker容器中是否可以再次安装docker?
- 可以,但没尝试
如何修改docker容器的启动/运行参数(ENV)
背景
- 背景:实验室机器断电下线后,重启后,GPU有块掉线
- 使用
sudo docker ps未查看到运行中的容器,用sudo docker ps -a发现所有容器状态均为Exited - 使用
sudo journalctl -xe或sudo systemctl status docker查看状态,察觉到报错与找不到显卡device有关
解决
- 随便找一个容器进行尝试,通过
sudo docker ps -a,记下容器id - 关闭
docker:sudo systemctl stop docker - 修改
config.v2.json,位置在/容器安装位置/containers/容器id中,如/home/docker/容器id/config.v2.json,修改对应DEVICE参数 - 重启
docker:sudo systemctl start docker - 发现容器可正常进入使用
参考
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cv-programmer!





