docker常用命令便查

一、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查看镜像仓库的位置

在docker容器中使用GPU

猜你喜欢

转载自blog.csdn.net/aiaidexiaji/article/details/126448915