一、Docker操作
docker --help | 帮助命令 |
---|---|
docker info | 查看Docker系统信息 |
docker version | 查看Docker版本信息 |
systemctl status docker | centOs7查看docker服务信息 |
systemctl restart docker | centOs7重启docker服务 |
docker system df | 查看本地镜像占用空间 |
二、容器操作
2.1 容器生命周期管理
查看容器信息 docker ps
–no-trunc:不对输出进行截断操作,此时可以看到完整的COMMAND,CONTAINER ID
-a 显示所有容器,包括未运行的容器
-s:列出容器的文件大小(容器增加的大小/容器的虚拟大小)
-q:仅列出CONTAINER ID 字段,此命令常用于批量操作的参数,
如批量停止所有容器 docker stop docker ps -a -q
-l: 显示最后一个运行的容器(无论该容器目前处于什么状态)
docker ps -n 数量x:显示最后 x 个运行容器,当x为1时和 -l 含义相同。(无论该容器目前处于什么状态)
-f :使用过滤器来过滤输出,目前支持过滤器:
- id (容器的id)
- label
- name(容器名称)
- exited (整数-容器退出状态码,只有在使用-all才有用)
- status 容器状态(created,restarting,running,paused,exited,dead)
- ancestor 过滤从指定镜像创建的容器,如果指定的是某个父镜像,则过滤出的结果包含以此镜像构建的子镜像创建的容器,不仅仅是以该镜像直接创建的容器
- before (容器的名称或id),过滤在给定id或名称之后创建的容器
- isolation (default process hyperv) (windows daemon only)
- volume (数据卷名称或挂载点),–过滤挂载有指定数据卷的容器
- network(网络id或名称),过滤连接到指定网络的容器
筛选查询
docker ps |grep job 筛选容器名为job容器
docker ps的结果说明
CONTAINER ID:容器的唯一标识符号,自动生成。
IMAGE :创建容器使用的镜像名称。
COMMAND:运行容器时的命令。
CREATED:容器创建的时间。
STATUS:容器的运行状态,
- Up 17 hours 指容器已运行17小时。
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS:容器开放的端口信息。
NAME:容器的别名,在运行容器执行docker run 时可使用–name进行指定。
PORTS中0.0.0.0:32768->80/tcp 这代表两层含义 1:容器中开放了80端口,使用TCP协议,对应宿主机使用32768端口进行映射。此时可以使用"宿主机IP:32768" 对容器80端口提供的服务进行访问
实例
docker ps -f status=exited
docker ps -f ancestor=597ce1600cf4 -f status=exited -a
docker rm ‘docker ps -f status=exited --format {{.ID}}’ 删除所有状态为exited的容器
根据镜像创建一个容器并运行
docker run [OPTIONS] IMAGE [COMMAND][ARG…]
-d 后台运行容器
-p [host端口]:[容器端口] 容器内端口映射到主机
-v [host目录]:[容器目录] 给容器挂载一个host目录
–name [容器名称] 给容器指定一个名字
实例
运行一个最新版本nginx容器
docker run --name mynginx -d nginx:latest
docker run -p 80:80 -v /data:/data -d nginx:latest
根据容器生成镜像
** docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] **
参数说明
-a 作者
-m 提交信息
实例:docker commit -a hukl -m “test commit” containerId mycentos:1.4
启动一个或多个已经被停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER…]
实例docker start mynginx
停止一个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER…]
实例docker stop mynginx
重启一个运行中的容器
docker restart [OPTIONS] CONTAINER [CONTAINER…]
杀掉一个运行中的容器
docker kill[OPTIONS] CONTAINER [CONTAINER…]
-s :向容器发送一个信号
实例docker kill -s KILL mynginx
延伸:stop与kill的区别
docker stop: Stop a running container (send SIGTERM, and then SIGKILL after grace period)
docker kill: Kill a running container (send SIGKILL, or specified signal)
docker stop,支持“优雅退出”。先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。
docker kill,发送SIGKILL信号,应用程序直接退出。
删除一个或多个容器
docker rm[OPTIONS] CONTAINER [CONTAINER…]
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-v :删除与容器关联的卷。
实例docker rm -f mynginx
暂停容器中所有的进程
docker pause [OPTIONS] CONTAINER [CONTAINER…]
实例docker pause mynginx
恢复容器中所有的进程
docker unpause [OPTIONS] CONTAINER [CONTAINER…]
实例docker unpause mynginx
2.2 容器运维操作
在运行的容器中执行命令
docker exec[OPTIONS] CONTAINER COMMAND [ARG…]
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
实例
docker exec -it 3a3afa942911 /bin/bash**
退出容器
退出容器,容器还运行:先按ctrl+P,再按ctrl+Q
退出容器后,容器销毁,ps查不到:ctrl+D或者exit
获取容器的日志
docker logs [OPTIONS] CONTAINER
-f , --follow: 跟踪日志输出
-t : 显示时间戳
–since :显示某个开始时间的所有日志
–details 显示更多的信息
–tail string 从日志末尾显示多少行日志, 默认是all
–until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
实例
实时查看
docker logs -f -t mynginx
查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since=“2018-02-08” --tail=100 CONTAINER_ID
查看最近30分钟的日志:
docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
docker logs -t --since=“2018-02-08T13:23:37” CONTAINER_ID
查看某时间段日志:
docker logs -t --since=“2022-02-18T09:50:05” --until “2022-02-18T09:50:06” docker-cmrm-czjob
列出指定的容器的端口映射
或者查找将PRIVATE_PORT NAT到面向公众的端口
docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
实例
docker port mynginx
docker port mynginx2 80
2.3 容器命令
从容器创建一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
实例
docker commit -a ‘Gideon’ -m “my Nginx” mynginx nginx:v1docker images #查看最新生成的image
容器与主机之间的数据拷贝
docker cp[OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
实例docker cp /t.txt mynginx:/
检查容器里文件结构的更改。
docker diff[OPTIONS] CONTAINER
实例docker diff mynginx
三、镜像操作
远程仓库docker hub镜像查询
docker search [OPTIONS] TERM
例如:docker search -f stars=50 nginx
查询nginx镜像,并且stars大于等于50的镜像
从远程仓库拉取镜像
** docker pull [OPTIONS] NAME[:TAG|@DIGEST] **
例如docker pull nginx 等价于
docker pull nginx:latest
推送镜像到远程仓库
** docker push [OPTIONS] NAME[:TAG] **
docker push nginx:latest
保存一个或多个镜像为一个压缩包
docker save [OPTIONS] IMAGE [IMAGE…]
-o 保存输出为一个文件
docker save -o nginx.tar nginx:latest
加载压缩包为镜像
docker load [OPTIONS]
-i 从压缩文件中读取
docker load -i nginx.tar
从Dockerfile构建镜像
docker build [OPTIONS] PATH | URL | -
查看本地镜像
docker images [OPTIONS][REPOSITORY[:TAG]]
-a :列出本地所有的镜像
-q :只显示镜像id
实例
docker images nginx #查看所有的nginx镜像
删除本地一个或多少镜像
docker rmi [OPTIONS] IMAGE [IMAGE…]
-f :强制删除;
实例docker rmi -f nginx:v1
标记本地镜像,将其归入某一仓库
docker tag [OPTIONS] IMAGE[:TAG][REGISTRYHOST/][USERNAME/]NAME[:TAG]
实例docker tag nginx:latest
nginx:v2docker images # 查看结果
实例:
docker tag registry 10.1.18.202:5000/registry
docker push 10.1.18.202:5000/registry
虚悬镜像
虚悬镜像指的是镜像名和标签为的镜像,一般没什么价值
docker image ls -f dangling=true 列出虚悬镜像
docker image prune 删除虚悬镜像
四、仓库操作
登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker login [OPTIONS][SERVER]
-u :登陆的用户名
-p :登陆的密码
实例docker login -u 用户名 -p 密码
从镜像仓库中拉取或者更新指定镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-a :拉取所有 tagged 镜像
–disable-content-trust :忽略镜像的校验,默认开启
实例docker pull nginx
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker push [OPTIONS] NAME[:TAG]
–disable-content-trust :忽略镜像的校验,默认开启
实例docker push nginx:v2
从Docker Hub查找镜像
docker search [OPTIONS] TERM
–no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。
–automated :只列出 automated build类型的镜像;
实例docker search nginx
docker network
查看网络信息:docker network ls
创建网络:docker network create [OPTIONS] NETWORK
–driver string 管理网络的驱动程序(默认“bridge”)
–gateway string 主子网的IPv4或IPv6网关
–subnet string CIDR格式的子网,表示网段
–attacheable 启用手动容器连接
docker network create br0
docker network create --driver=overlay --gateway 1.19.173.1 --subnet 1.19.173.0/24 --attachable br1
容器连网络
docker network connect [OPTIONS] NETWORK CONTAINER
容器脱离网络
docker network connect [OPTIONS] NETWORK CONTAINER
查看某个网络信息
docker network inspect NETWORK
删除网络
docker network rm br0
删除所有未使用的网络
docker network prune
docker swarm
主节点上初始化manager
docker swarm init
子节点加入集群,在子节点执行:
docker swarm join --token SWMTKN-1-5dedtjhyok409nnep66slq2o4t1foi0icacbo42n5yh3rw9g8f-01s3puooagmyssx9a21qkkd1z 10.1.11.173:2377
说明:查看token方法:在主节点执行
docker swarm join-token -q worker
加入成功,在主节点查看
docker node ls
配置镜像仓库:
编辑镜像仓库配置文件,修改镜像仓库地址
vi /etc/docker/daemon.json
{“insecure-registries”:[“10.1.18.202:5000”]}
重启docker
systemctl restart docker