docker 常用方法
目录
docker参数解释
基础信息和环境变量设置
容器运行和管理相关参数
数据卷挂载
GPU 相关参数
镜像相关参数
查看现有的镜像
docker images
查看正在运行的docker
docker ps
1、docker启动停止及查看状态
启动docker:
systemctl start docker
停止docker:
systemctl stop docker
重启docker:
systemctl restart docker
查看docker状态:
systemctl status docker
开机启动:
systemctl enable docker
docker version
docker info
docker --help
2、镜像命令
查看镜像
docker images
搜索镜像
docker search 某个XXX镜像名字
下载镜像
docker pull 镜像名字[:TAG]
docker rmi 某个XXX镜像名字ID
删除镜像
删除单个
docker rmi -f 镜像ID
删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部
docker rmi -f $(docker images -qa)
3、容器命令
3.1 新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS说明
OPTIONS说明(常用):有些是一个减号,有些是两个减号
–name=“容器新名字”: 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
#使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it centos /bin/bash
3.2 列出当前所有正在运行的容器
docker ps [OPTIONS]
OPTIONS说明
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
–no-trunc :不截断输出。
3.3 容器启动、停止、退出、删除
退出容器,两种退出方式
exit 容器停止退出
ctrl+P+Q 容器不停止退出
启动容器
docker start 容器ID或者容器名
重启容器
docker restart 容器ID或者容器名
停止容器
docker stop 容器ID或者容器名
强制停止容器
docker kill 容器ID或者容器名
删除已停止的容器
docker rm 容器ID
一次性删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
3.4 重要
启动守护式容器
docker run -d 容器名
查看容器日志
docker logs -f -t --tail 容器ID
-t 是加入时间戳
* -f 跟随最新的日志打印
* --tail 数字 显示最后多少条
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
进入正在运行的容器并以命令行交互
docker exec -it 容器ID bashShell
docker exec -it 1212221 /bin/bash
重新进入docker attach 容器ID
上述两个区别
attach 直接进入容器启动命令的终端,不会启动新的进程
exec 是在容器中打开新的终端,并且可以启动新的进程
从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
从主机内拷贝文件到容器上
docker cp 目的主机路径 容器ID:容器内路径
docker commit提交容器副本使之成为一个新的镜像
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
保存docker镜像
docker save -o es.tar elasticsearch
导入docker镜像
docker load -i /home/es.tar
docker参数解释
NAME=split:v0.0.49.gpu docker run -e SLEEP_FOR_TEST=1 --rm --name lbg -it --network=host \ -v /shared_disk/users/liuzhichao/data:/data -v /shared_disk/:/shared_disk/ -v /mnt:/mnt --gpus '"device=7"' \ -e NVIDIA_VISIBLE_DEVICES=7 -e NVIDIA_MEM_LIMIT=12288 \ gigahubnew-cn-beijing.cr.volces.com/gigaai/algo/giga_data_platform_video_$NAME 这些参数什么意思
以下是对上述 docker run
命令中各个参数的详细解释:
基础信息和环境变量设置
NAME=split:v0.0.49.gpu
:定义了一个名为NAME
的环境变量,其值为split:v0.0.49.gpu
。这个变量可能在后续的容器运行过程中被引用,用于指定特定的版本或配置等信息 。-e SLEEP_FOR_TEST=1
:向容器内传递一个名为SLEEP_FOR_TEST
的环境变量,并将其值设置为1
。容器内的应用程序可以读取这个环境变量来决定是否进行一些与测试相关的等待或特定操作。-e NVIDIA_VISIBLE_DEVICES=7
:指定容器内可见的 NVIDIA GPU 设备为设备号7
。这意味着容器中的应用程序只能访问和使用这一个指定的 GPU 设备。-e NVIDIA_MEM_LIMIT=12288
:设置容器可以使用的 NVIDIA GPU 内存限制为12288
,这里的单位可能是根据具体的配置或约定来确定的,比如可能是 MB 等。通过限制内存使用,可以防止容器内的应用程序过度占用 GPU 内存,影响其他应用或系统的正常运行。
容器运行和管理相关参数
--rm
:表示在容器退出时自动删除容器。这样可以避免容器在运行完成后仍然占用系统资源,方便清理和管理。--name lbg
:为运行的容器指定一个名称为lbg
。通过这个名称,可以方便地对容器进行操作和管理,例如查看容器的状态、停止或重启容器等。-it
:表示以交互模式运行容器,并为容器分配一个伪终端。这使得用户可以在容器启动后直接与容器内的 shell 进行交互,方便进行调试、执行命令等操作。
数据卷挂载
-v /shared_disk/users/liuzhichao/data:/data
:将宿主机上的/shared_disk/users/liuzhichao/data
目录挂载到容器内的/data
目录。这样,容器内的应用程序就可以访问和操作宿主机上对应目录中的数据,实现数据的共享和持久化存储。-v /shared_disk/:/shared_disk/
:将宿主机上的整个/shared_disk/
目录挂载到容器内的同名目录/shared_disk/
。类似地,这使得容器内的应用程序能够访问宿主机上该目录下的所有数据和文件。-v /mnt:/mnt
:将宿主机上的/mnt
目录挂载到容器内的/mnt
目录,实现这两个目录之间的数据共享和交互。
GPU 相关参数
--gpus '"device=7"'
:明确指定容器使用的 GPU 设备为设备号7
,这是一种更明确地指定 GPU 设备的方式,与前面的NVIDIA_VISIBLE_DEVICES
环境变量起到类似的作用,但在某些情况下可能提供更精细的 GPU 资源分配和管理。
镜像相关参数
gigahubnew-cn-beijing.cr.volces.com/gigaai/algo/giga_data_platform_video_$NAME
:指定要运行的 Docker 镜像的名称和路径。其中$NAME
会被前面定义的NAME
环境变量的值所替换,从而确定具体要运行的镜像版本,例如可能会实际运行gigahubnew-cn-beijing.cr.volces.com/gigaai/algo/giga_data_platform_video_split:v0.0.49.gpu
这个镜像。
这些参数共同作用,使得 Docker 容器能够在特定的配置和环境下运行,并与宿主机进行有效的数据交互和资源共享,以满足特定应用程序的运行需求。