目录
一、docker常用命令
*注:docker命令中,镜像/容器的"名称"使用时一般等同于"ID",均能代表某指定镜像/容器,本文描述中均以[镜像名称/ID]
代指。(ID若无歧义可简写,如只输入前两位)。
镜像名称(“镜像名称:版本号”指定版本,未指定则最新版
:latest
):python/python:3.9.16
镜像ID(一个64位Hash,一般只显示前12位,容器ID类似):c65dadac8789
容器名称(这个一般是自己起的,也没有镜像的版本号,将容器打包成镜像时可加版本号):ContainerName
1.镜像:查询/拉取/删除(images / pull / rm)
查询镜像(docker images)
查看系统中docker的镜像(可被复制的镜像文件,类似于装机光盘)。
docker images -a
查询完后系统会显示系统中当前存在的镜像及信息:镜像名称、镜像ID、镜像创建时间等信息。
拉取镜像(docker pull)
# docker pull [镜像名称/ID:tag]
docker pull python/python:3.9.16
删除镜像(docker image rm)
# docker image rm [镜像名称/ID]
docker image rm c65dadac8789
# docker rmi [镜像名称/ID]
docker rmi c65dadac8789
需要强制删除加-f
,例如:
docker rmi -f c65dadac8789
删除全部镜像,-a
意思为显示全部,-q
意思为只显示ID。
docker rmi -f $(docker images -aq)
2.容器:查询/进入/创建/删除(ps / exec / run / rm)
通过docker镜像启动一个新的容器。
docker run -itd -u root --name="ContainerName" -v /data:/data python/python:3.9.16 /bin/bash
成功启动后会显示容器的64位SHA串码。
查询容器(docker ps)
查看运行中的所有容器(每个容器类似于一个启动中的系统),加-a
查询所有正在运行、暂停的容器,不加-a
只查询正在运行的容器。
docker ps -a
进入容器(docker exec)
# docker exec -it [容器名称/ID] /bin/bash
docker exec -it e66b5694a3bd /bin/bash
*注:这里最后跟的/bin/bash
为容器内bash
程序位置,有些镜像只有/bin/sh
或/bash
,进不去容器可以多试试。
退出容器(exit)
在容器内需要退出时输入exit
。
# 直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭
exit
# 优雅退出 无论是否添加 -d 参数 执行此命令容器都不会被关闭
Ctrl + q
创建容器(docker run)
通过docker镜像启动一个新的容器。
docker run -itd -u root --name="ContainerName" -v /data:/data python/python:3.9.16 /bin/bash
成功启动后会显示容器的64位SHA串码。
删除容器(docker rm)
强制删除可加-f
。
# docker rm -f [容器名称/ID]
docker rm -f e66b5694a3bd
迭代删除全部的容器,-a
意思为显示全部,-q
意思为只显示ID。
docker rm -f $(docker ps -aq)
docker rm会删除容器运行中产生的数据,而docker kill 不会。
docker kill e66b5694a3bd
3.暂停/开始容器(stop / start)
容器在启动状态(up)才可以进入工作。在 docker 重启后容器会暂停,或者可以手动暂停/开始容器。
暂停容器(docker stop)
# docker stop [容器名称/ID]
docker stop e66b5694a3bd
开始容器(docker start)
# docker start [容器名称/ID]
docker start e66b5694a3bd
重启容器(docker restart)
# docker restart [容器名称/ID]
docker restart e66b5694a3bd
4.查询容器运行状态(inspect)
查看容器所有状态(docker inspect)
inspect查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置.
默认显示所有信息
# docker inspect [容器名称/ID]
docker inspect Example
如只想要某些信息
docker inspect --format='{{.NetworkSettings.IPAddress}}' Example
> 172.18.0.2
docker inspect --format '{{.Name}} {{.State.Running}}' Example
> /Example true
# 或
docker inspect Example |grep IPAddress
> "SecondaryIPAddresses": null,
> "IPAddress": "",
> "IPAddress": "172.18.0.2",
查看容器硬件使用参数(docker stats)
查看容器CPU内存硬盘等使用率
# docker stats [容器名称/ID]
docker stats Example
查看容器内进程信息(docker top)
# docker top [容器名称/ID]
docker top Example
# 或
# docker exec [容器名称/ID] ps -ef
docker exec Example ps -ef
二、容器的启动(docker run 及 docker-compose的使用)
从镜像启动一个容器,需要 docker run 命令或者 docker-compose 命令。
1.docker run 使用及相关参数
docker run -itd -u root --gpus='"device=0,1"' --name="ContainerName" -v /project/pytorch/data:/data pytorch_lightning:latest /bin/bash
参数详解
参数 | 含义 |
---|---|
-i | 以交互模式运行容器,通常与 -t 同时使用命令解释 |
-t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用 |
-d | 后台运行容器,并返回容器ID |
--gpus=‘“device=0,1”’ | 指定容器可以使用(看见)哪块儿显卡,如果可以使用所有的显卡用参数**--gpus all** |
-p 9922:22 | 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口 |
-v /project/pytorch/data:/data | 将容器/data目录挂载到宿主机/project/pytorch/data目录下,若宿主机内此目录不存在将会自动创建 |
--restart always | 该容器随docker服务启动而自动启动 |
--privileged=true | 让容器获取宿主机root权限。指定容器是否为特权容器,特权容器拥有所有的权限,默认为false |
--name ContainerName | 设置容器名称为ContainerName |
gitlab/gitlab-ce | 镜像的名称,这里也可以写镜像ID |
2.docker compose使用及yml文件参数
https://blog.csdn.net/pushiqiang/article/details/78682323
https://baijiahao.baidu.com/s?id=1659023590103934059&wfr=spider&for=pc
https://blog.csdn.net/weixin_51560103/article/details/121492568
https://www.runoob.com/docker/docker-compose.html
https://zhuanlan.zhihu.com/p/51055141
三、查找/拉区镜像与容器保存(search/pull)
1.查找需要的镜像(docker-hub的使用)
百度搜docker hub或直接访问网址,为了省流这里就不放图片了。
https://hub.docker.com/
网站左上角有搜索,可以搜索别人制作好的镜像,拉取,然后修改使用,也可以自行制作容器上传社区。
这里如搜索关键词pytorch1.7
然后会看到如下结果
azraelkuan/pytorch1.7.1-hvd-apex-py38-cuda11.0-cudnn8
freddierao/pytorch1.7-hrnetcls-mpi-apex
siaimes/pytorch1.7
...
可以看到第一个镜像除了标记了pytorch版本还标记了python及cuda版本,与我们服务器cuda版本匹配(服务器cuda版本需高于等于镜像中cuda版本),即可拉取使用。
docker也提供了命令行搜索镜像
docker search [镜像名称]
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像
2.镜像的拉取(pull)
点击进入描述页面后,可以看到左下有Overview(概述),右下角有Docker Pull Command(docker镜像拉取命令)。点击右侧拉取命令的复制即可在服务器拉取镜像。
# docker pull [镜像名称/ID]
docker pull siaimes/pytorch1.7
# 镜像名称后也可跟镜像的版本号,如最新版 :latest
docker pull siaimes/pytorch1.7:latest
指定架构
有些镜像是多架构的,docker-hub上会标注,如 x86 arm64
。
可以添加参数--platform arm64
指定所需架构镜像。
docker pull --platform arm64 siaimes/pytorch1.7
3.容器的保存与上传(commit / save / load)
将容器保存成镜像(docker commit)
我们运行的容器可能在镜像的基础上做了一些修改,有时候我们希望保存起来,封装成一个更新的镜像,这时候我们就需要使用 commit 命令来构建一个新的镜像
# docker commit -m="提交信息" -a="作者信息" [容器名称/ID] 提交后的镜像名:Tag
docker commit -m="a new image" -a="HZY" e66b5694a3bd SaveImage:1.0
保存镜像(docker save)
# docker save [镜像名称/ID] -o 镜像保存的位置与名字
docker save SaveImage -o ./myimg.tar
加载镜像(docker load)
加载文件将其恢复为镜像
# docker load -i 镜像保存文件位置
docker load -i ./myimg.tar
四、docker更多操作语句
容器文件拷贝(docker cp)
无论容器是否开启 都可以进行拷贝
#docker cp [容器名称/ID]:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 [容器名称/ID]:文件路径
#从容器内 拷出
docker cp [容器名称/ID]:容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 [容器名称/ID]:容器内路径
查看容器日志(docker logs)
docker logs -f --tail=要查看末尾多少行(默认all) [容器名称/ID]
更换容器名(docker rename)
给容器换个霸气炫酷吊炸天的名字?
docker rename [容器名称/ID] 新容器名
更换镜像标签(docker tag)
有的时候呢,我们需要对一个镜像进行分类或者版本迭代操作,比如我们一个微服务已经打为docker镜像,但是想根据环境进行区分为develop环境与alpha环境,这个时候呢,我们就可以使用Tag,来进对镜像做一个标签添加,从而行进区分;版本迭代逻辑也是一样,根据不同的tag进行区分
# docker tag 源镜像名:tag 想要生成新的镜像名:新的tag
docker tag source_image:1.0 target_image:new_tag-1.1
删除无用的容器和镜像
# 删除异常停止的容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
# 删除名称或标签为none的镜像
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`
清除所有无容器使用的镜像
注意,此命令只要是镜像无容器使用(容器正常运行)都会被删除,包括容器临时停止
docker system prune -a
查看docker磁盘占用总体情况
du -hs /var/lib/docker/
查看Docker的磁盘使用具体情况
docker system df
五、docker基础命令
1.启动/关闭/重启docker服务(systemctl start / stop / restart docker)
启动docker服务
systemctl start docker
关闭docker服务
systemctl stop docker
重启docker服务
systemctl restart docker
2.设置docker随系统服务启动而自启动
systemctl enable docker
3.查看docker运行状态/版本信息
查看docker运行状态
如果docker在运行中,输入命令后,能看到绿色的active
systemctl status docker
查看docker版本号信息
docker version
docker info
六、相关资源查询语句
1.docker查看镜像仓库的位置
cd /var/lib/docker
进入docker的镜像目录。
2.image镜像位置
image文件夹下存放镜像内容
cd image/overlay2 # 有的是image/aufs
cat repositories.json # 查看镜像仓库内容
3.container容器位置
container文件夹下存放容器内容
cd containers
ls -l # 查看容器列表
4.linux查询和杀死进程
查询进程
ps -a
杀死进程
加参数-9
为强制结束进程
kill -9 [进程PID]
5.nvidia-smi查询显卡及查询资源使用
查看显卡状态
nvidia-smi
监控显卡状态
watch -n 1 -d nvidia-smi
6.其他命令
netstat
netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp
七、docker安装
1.docker安装
2.nvidiadocker
https://zhuanlan.zhihu.com/p/377537818?ivk_sa=1024320u
没安过回头再更吧
参考资料
docker 常用命令大全
Docker 搭建 Gitlab 服务器 (完整详细版)
如何查看docker容器运行状态
docker中kill和rm的区别是什么
docker指定使用某几张显卡/某几个GPU
docker和nvidia docker的启动
查看docker内部路径_docker 容器卷
docker查看镜像仓库的位置