ToB企服应用市场:ToB评测及商务社交产业平台

标题: Docker常见命令 [打印本页]

作者: 火影    时间: 2024-5-26 09:49
标题: Docker常见命令
目录

一、体系管理命令

1、启动Docker服务
  1. systemctl start docker
复制代码
2、制止Docker服务
  1. systemctl stop docker
复制代码
3、重启Docker服务
  1. systemctl restart docker
复制代码
4、设置Docker开机启动
  1. systemctl enable docker
复制代码
5、查看Docker服务状态
  1. systemctl status docker
复制代码

6、查看Docker版本信息
  1. docker version 或 docker info
复制代码

二、镜像管理命令

1、查看本地镜像
  1. docker images
复制代码


2、搜索Docker Hub上的镜像
  1. docker search [镜像名]
复制代码
2.1、常见选项

2.2、示例:搜索星数大于100的MySQL镜像并限制搜索效果为5个
  1. docker search -f stars=100 --limit 5 mysql
复制代码

docker search进行搜索返回的效果中不仅会列出直接名为 mysql的镜像,还会包括描述中带有 mysql 的其他镜像
3、从Docker Hub上拉取镜像

不加tag(版本号)即默认拉取最新版本latest
  1. docker pull [镜像名:标签]
复制代码
3.1、常见选项

3.3、示例:拉取redis-5.0.14

Docker Hub官网
  1. docker pull redis:5.0.14
复制代码

4、标签管理
  1. docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
复制代码
为本地镜像添加或更改标签。
4.1、示例:给刚下载的redis添加标签
  1. docker tag redis:5.0.14 myredis:5.0.14
复制代码

当 docker images 显示出两个标签看起来一样的镜像(除了仓库名不同),它们实际上指向同一个底层镜像数据。,只是通过不同的名称和标签来区分。
5、获取镜像详细信息
  1. docker inspect [OPTIONS] NAME|ID
复制代码
5.1、常见选项

5.2、示例:查抄reids:5.0.14镜像的ID和创建时间
  1. docker inspect --format '{{println .Id}}{{println .Created}}' redis:5.0.14
  2. docker inspect --format '{{printf "%s\n%s" .Id .Created}}' redis:5.0.14
复制代码

6、展示镜像的构建历史

用于展示一个Docker镜像的构建历史,列出构建该镜像时的每一层及其相干信息
  1. docker history [OPTIONS] IMAGE
复制代码
6.1、常见选项

6.2、示例:列出redis:5.0.14各层创建的信息
  1. docker history redis:5.0.14
复制代码

7、镜像的导入导出

7.1、导出

7.2、导入

8、删除镜像

8.1、常见选项

8.2、通过镜像名称+标签删除镜像
  1. docker rmi redis:5.0.14
复制代码

8.3、通过镜像id删除镜像
  1. docker images
  2. docker rmi 99ee9af2b6b1
复制代码

8.4、删除所有无容器使用的镜像
  1. docker system prune -a
复制代码
三、容器管理命令

1、Docker容器的生命周期


2、创建容器

当使用docker create命令创建一个容器时,容器就处于创建状态。在这个阶段,容器已经被创建,但还没有被启动。
  1. dcoker create IMAGE[:TAG]
复制代码
2.1、示例:创建一个nginx容器
  1. docker create nginx
复制代码

3、启动容器
  1. docker start CONTAINER ID
复制代码
3.1、示例:启动nginx容器
  1. [root@localhost ~]# docker start b0
  2. b0
复制代码

这里容器ID输入了b0也启动了容器
只要这些字符足以唯一标识一个容器。Docker会主动匹配并尝试启动
与之相匹配的第一个容器。
4、创建并启动容器
  1. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
复制代码
4.1、常见选项

选项描述--add-host添加自定义的主机到IP映射(格式:主机:IP)-a, --attach毗连到容器的 STDIN、STDOUT 或 STDERR--annotation给容器添加注解(通过OCI运行时传递)-c, --cpu-sharesCPU份额(相对权重)-d, --detach后台运行容器并打印容器ID--env设置环境变量-e, --env-file从文件读取环境变量-h, --hostname设置容器的主机名-i, --interactive即使不毗连也保持 STDIN 打开-l, --label设置容器的元数据标签--name为容器指定名称-p, --publish将容器的端口发布到主机-P, --publish-all将所有暴露的端口随机映射到主机-t, --tty分配一个伪TTY-u, --user指定用户名或UID(格式:用户名--volume, -v挂载一个卷--workdir, -w设置容器内部的工作目录--cap-add添加Linux本领--cap-drop移除Linux本领--device添加主机设备到容器--device-read-bps限制从设备读取速率(每秒字节数)--memory内存限制--network毗连容器到网络--privileged给予容器额外权限--read-only以只读方式挂载容器的根文件体系--restart容器退出后的重启计谋--rm容器退出后主动删除--security-opt设置安全选项--ulimit设置ulimit限制--volume-driver为容器指定卷驱动--volumes-from从其他容器挂载卷--health-cmd设置健康查抄命令--memory-swappiness调整容器内存交换行为--sysctl设置sysctl选项--tmpfs挂载暂时文件体系目录--stop-signal设置制止容器的信号--cpu-period, --cpu-quota限制CPU使用周期和配额(CFS)4.2、示例:创建并启动一个hello-world容器
  1. docker run hello-world
复制代码

4.3、示例:后台启动个nginx容器,保持尺度输入打开并分配一个终端(-itd)
  1. docker run -itd nginx
复制代码

4.4、示例:后台启动个redis:5.0.14容器,保持尺度输入打开,分配一个终端并取别名为redis-v1(-itd --name)
  1. docker run -itd --name redis-v1 redis:5.0.14
复制代码

4.5、示例:后台启动个centos容器,保持尺度输入打开,分配一个终端并取别名为centos-v2,并设置随docker服务启动而启动(-itd --name --restart=always)
  1. docker run -itd --name centos-v2 --restart=always centos
复制代码

5、查看正在运行的容器
  1. docker ps
复制代码

6、查看所以容器(包含运行和已制止的)
  1. docker ps -a
复制代码

7、挂起容器
  1. docker pause CONTAINER ID/CONTAINER NAMES
复制代码
7.1、示例:挂起nginx容器
  1. docker ps
  2. docker pause angry_proskuriakova
复制代码

8、取消挂起容器
  1. docker pause CONTAINER ID/CONTAINER NAMES
复制代码
8.1、示例:取消挂起的nginx容器
  1. docker unpause angry_proskuriakova
复制代码

9、终止容器
  1. docker stop [OPTIONS] CONTAINER [CONTAINER...]
复制代码
9.1、示例:终止nginx容器
  1. docker stop b0
复制代码

10、删除容器
  1. docker rm [OPTIONS] CONTAINER [CONTAINER...]
复制代码
10.1、常见选项

10.2、示例:删除hello-world容器
  1. docker rm b6
复制代码

10.3、示例:批量删除已制止运行的容器
  1. docker rm -f `docker ps -qa`
复制代码

11、attach进入容器

使用此方式进入容器的操作都是同步显示的且exit容器将被关闭
  1. docker attach [OPTIONS] CONTAINER
复制代码
11.1、示例:使用attach进入centos容器
  1. docker attach 461
复制代码

11.1、示例:优雅的退出容器(退出时容器保持运行)
  1. ctrl + p + q
复制代码

12、exec进入容器(保举使用)

执行单次命令后进入容器,退出容器后容器还在运行
  1. docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
复制代码
12.1、示例:使用exec进入centos容器
  1. docker exec -it 461 /bin/bash
复制代码

13、nsenter进入容器

nsenter命令必要通过pid进入到容器内部
  1. nsenter [options] <program> [<argument>...]
复制代码
13.1、常见选项

选项描述-t, --target指定要获取其名称空间的目标进程的PID。-m, --mount[=]进入指定文件(默认为 /proc//ns/mnt)代表的挂载命名空间。-u, --uts[=]进入指定文件(默认为 /proc//ns/uts)代表的UTS命名空间(主机名等)。-i, --ipc[=]进入指定文件(默认为 /proc//ns/ipc)代表的System V IPC命名空间。-n, --net[=]进入指定文件(默认为 /proc//ns/net)代表的网络命名空间。-p, --pid[=]进入指定文件(默认为 /proc//ns/pid)代表的PID命名空间。-U, --user[=]进入指定文件(默认为 /proc//ns/user)代表的用户命名空间。-S, --setuid在进入的命名空间中设置UID。-G, --setgid在进入的命名空间中设置GID。--preserve-credentials不修改进入命名空间后的UID或GID。-r, --root[=]设置进入命名空间后的根目录。-w, --wd[=]设置进入命名空间后的工作目录。-F, --no-fork不进行fork操作直接执行指定程序。-Z, --follow-context根据目标PID设置SELinux上下文。-h, --help显示帮助信息并退出。-V, --version显示版本信息并退出。13.2、示例:使用nsenter进入容器
  1. docker inspect -f "{{.State.Pid}}" 461       
  2. #首先使用docker inspect获取到容器的pid
  3. nsenter -t 5386 -m -u -i -n -p
  4. #-t 5386:指定PID为5386进入这个进程的各个命名空间。-m -u -i -n -p分别是进入目标进程的挂载命名空间、用户命名空间、IPC命名空间、网络命名空间、PID命名空间
复制代码

13.3、示例:脚本形式进入容器
  1. [root@localhost ~]# cat docker_in.sh
  2. #!/bin/bash
  3. docker_in(){
  4. DOCKER_ID=$1
  5. PID=`docker inspect -f "{{.State.Pid}}" ${DOCKER_ID}`
  6. nsenter -t ${PID} -m -u -i -n -p
  7. }
  8. docker_in $1
复制代码

14、端口映射

Docker容器的端口映射是一种让宿主机(运行Docker的呆板)与Docker容器之间的网络通信成为大概的技术。
它允许外部体系通过宿主机的IP地点和端口访问到容器内部的服务。
  1. -p 宿主机端口:容器端口
复制代码
14.1、示例:前台启动nginx,随机端口映射(-P)
  1. docker run -P nginx
  2. ss -tunlp
  3. #可以看到,随机的端口映射其实是从32768开始映射
复制代码
前台启动随机端口映射
ss -tunlp进行端口验证
浏览器输入ip+端标语访问
14.2、本地端口80映射到容器80端口
  1. docker run -itd -p 8080:80 --name nginx-v1 nginx:latest
复制代码
后台启动,保持尺度输入并分配一个伪TTY终端,取别名为nginx-v1
浏览器输入ip+端标语访问
14.3、本地ip:本地端口:容器端口
  1. docker run -itd -p 192.168.112.60:8081:80 --name nginx-v2 nginx:latest
复制代码
使用本地ip:本地端口:容器端口进行端口映射
浏览器输入ip+端标语访问
14.4、本地ip:本地随机端口:容器端口
  1. docker run -itd -p 192.168.112.60::80 --name nginx-v3 nginx:latest
复制代码
使用本地ip:本地随机端口:容器端口进行端口映射
浏览器输入ip+端标语访问
14.5、本地ip:本地端口:容器端口/协议默认为tcp协议
  1. docker run -itd -p 192.168.112.60:8082:80/tcp --name nginx-v4 nginx:latest
复制代码
使用本地ip:本地端口:容器端口/协议默认为tcp协议进行端口映射
浏览器输入ip+端标语访问
15、查看容器已经映射的端口
  1. docker port CONTAINER [PRIVATE_PORT[/PROTO]]
复制代码
15.1、示例:查看目前nginx容器已经映射的端口
  1. docker ps
  2. [root@localhost ~]# docker port 50
  3. 80/tcp -> 192.168.112.60:8082
  4. [root@localhost ~]# docker port ba
  5. 80/tcp -> 192.168.112.60:32768
  6. [root@localhost ~]# docker port 5b
  7. 80/tcp -> 192.168.112.60:8081
  8. [root@localhost ~]# docker port 52
  9. 80/tcp -> 0.0.0.0:8080
  10. 80/tcp -> [::]:8080
复制代码

16、Docker容器文件的拷贝
  1. docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
  2. #docker cp 容器ID/名称:文件路径  要拷贝到外部的路径
  3. docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
  4. #docker cp  要拷贝到外部的路径  容器ID/名称:文件路径
复制代码
无论容器是否开启都可以进行拷贝
16.1、示例:从宿主机上拷贝文件到centos容器
  1. docker cp /opt/centos-v1.txt centos-v1:/opt/
  2. #将宿主机的/opt/centos-v1.txt文件拷贝到centos-v1容器内部的/op/下
复制代码

16.2、示例:从centos容器拷贝文件到宿主机上
  1. docker cp centos-v1:/tmp/hello.txt /tmp/
  2. #将centos-v1容器内/tmp/hello.txt文件拷贝到宿主机的/tmp/下
复制代码

17、查看容器的日志信息
  1. docker logs [OPTIONS] CONTAINER
复制代码
17.1、示例:查看nginx-v4容器日志
  1. docker logs nginx-v4
复制代码

18、更换容器名
  1. docker rename 容器ID/容器名 新容器名
复制代码
18.1、将容器centos-v2更换名字为mycentos-v2
  1. docker rename centos-v2 mycentos-v2
复制代码

19、数据挂载
  1. -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v...
复制代码
19.1、示例:运行一个nginx容器,进行端口映射以及数据卷挂载并设置开机自启动
  1. [root@localhost ~]# mkdir -p /data/web
  2. [root@localhost ~]# echo "nginx test" > /data/web/index.html
  3. [root@localhost ~]# docker run -itd -p 8085:80 --name nginx-v5 --restart=always -v /data/web/:/usr/share/nginx/html/  nginx
  4. 3a34a5e7f7cf9d457587227b9279601d57c4095a1bb515aba5ac2c8b049aacfd
  5. [root@localhost ~]# curl 192.168.112.60:8085
  6. nginx test
复制代码
至于容器里的绑定挂载和数据卷的概念后面单独解释
20、指定容器DNS

一是通过将dns地点配置在宿主机上
二是将参数配置在docker启动脚本里面
我们这里讨论第一种
20.1、示例:以后台模式创建并启动一个命名为centos-v3的CentOS容器,使用Google的公共DNS服务器进行域名剖析。
  1. docker run -itd --rm --dns 8.8.8.8 --name  centos-v3 centos bash
复制代码

21、导出容器

导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,导出一个容器快照
  1. docker export /指定路径/自定义名.tar 容器名/ID
复制代码
21.1、示例:将mycentos-v2容器导出到/opt/目录下的mycentos-v2压缩包
  1. docker export -o /opt/mycentos-v2.tar mycentos-v2
复制代码

22、导入容器

导入一个容器快照到本地镜像库
  1. docker import /指定路径/tar压缩文件 镜像名:标签
复制代码
22.1、示例:将/opt/目录下的mycentos-v2.tar导入到本地镜像库
  1. docker import /opt/mycentos-v2.tar mycentos:v2
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4