Docker命令笔记
基本命令
docker version # 查看docker版本详情
docker -v # 查看docker版本号
docker info # 查看docker详细信息
docker --help # 查看docker命令
进程命令
#启动docker服务:
systemctl start docker
service docker start
#停止docker服务:
systemctl stop docker
service docker stop
#重启docker服务:
systemctl restart docker
service docker restart
#查看docker服务状态:
systemctl status docker
service docker status
#设置开机启动docker服务:
systemctl enable docker
镜像命令
查看本地镜像
docker images # 查看本地docker镜像
# REPOSITORY TAG IMAGE ID CREATED SIZE
# 镜像的仓库源 镜像的标签 镜像ID 镜像创建时间 镜像大小
# 同一个仓库源可以有多个TAG,表示这个仓库源的不同版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果不指定一个镜像的版本标签,例如只使用tomcat,docker将默认使用tomcat:latest镜像
docker images -a # 列出本地所有的镜像
docker images -p # 只显示镜像ID
docker images --digests # 显示镜像的摘要信息
docker images --no-trunc # 显示完整的镜像信息
搜索和获取镜像
docker search 镜像名称 # 从Docker Hub上查找某个镜像
docker search -s 30 镜像名称 # 从Docker Hub上查找关注度大于30的某个镜像
docker pull 镜像名称:标签 # 从Docker Hub参考下载某个镜像。等价于:docker pull 镜像名:latest
docker push 镜像名称:标签 # 推送一个镜像到Docker Hub仓库
创建镜像
docker commit [OPTIONS] 容器名称或ID [镜像名称[:TAG]]
# [OPTIONS]:
-a, --author # string 作者信息
-c, --change # list 使用Dockerfile创建
-m, --message # string 提交信息
-p, --pause # 提交时暂停容器运行
# 基于容器创建一个新的镜像
docker commit -m "提交的描述信息" -a "作者" 容器名称或ID [镜像名称[:标签]]
# 示例:docker commit -m "新的tomcat" -a "lizq" f9e29e8455a5 mytomcat:1.2
docker build [OPTIONS] . # 通过 Dockerfile 创建镜像
# [OPTIONS]主要参数如下:
-f # 指定Dockerfile路径,默认为当前目录
-t # 指定生成镜像的标签信息
--rm # 设置镜像成功后删除中间容器
--no-cache # 创建镜像的过程不使用缓存
# 示例:通过当前目录下的 Dockerfile 创建一个名为soar/centos:7.1的镜像。最后的.表示当前目录
docker build -t soar/centos:7.1 .
删除镜像
docker rmi 镜像名称:标签(镜像ID或部分ID) # 删除某个镜像
docker rmi -f 镜像ID或镜像名称 # 强制删除某个镜像
docker rmi -f $(docker images -p) # 通过 docker images -p 查询到的镜像ID来删除所有镜像
docker rmi -f 镜像ID或镜像名称1 镜像ID或镜像名称2 # 强制删除镜像1和镜像2
其他命令
docker tag 镜像id 仓库:标签 # 为镜像创建一个新的标签
# 将一个或多个镜像保存成tar镜像库存储文件文件
docker save 镜像名称:标签(镜像ID或部分ID) > 文件名.tar
docker save -o 文件名.tar 镜像名称:标签(镜像ID或部分ID)
docker save --output 文件名.tar 镜像名称:标签(镜像ID或部分ID)
# 从tar镜像库存储文件文件加载成镜像(不能对载入的镜像重命名)
docker load < 文件名.tar
docker load -i 文件名.tar
docker load --input 文件名.tar
# 将一个或多个容器导出为tar容器快照文件
docker export 容器名或容器ID > 文件名.tar
docker export -o 文件名.tar 容器名或容器ID
docker export --output 文件名.tar 容器名或容器ID
# 从tar容器快照文件加载成镜像(可以为镜像指定新名称)
docker import 文件名.tar 镜像名称:标签
Dockerfile
指令说明
指令 | 说明 |
---|---|
FROM | 指定所创建镜像的基础镜像 |
MAINTAINER | 维护者信息 |
RUN | 运行命令 |
CMD | 启动容器时默认执行命令 |
LABEL | 标签信息 |
EXPOSE | 声明镜像内服务所监听的端口 |
ENV | 环境变量 |
ADD | 复制宿主机指定路径下的内容到容器中的路径下,可以为URL,也可以是文件路径,如果为tar文件,会自动解压 |
COPY | 复制宿主机指定路径下的内容到容器中的路径下 |
USER | 运行容器时的用户名 |
WORKDIR | 配置工作目录 |
ARG | 指定镜像内使用的参数 |
容器命令
查看容器
docker ps # 列出当前所有正在运行的容器
docker ps -a # 列出所有的容器
docker ps -l # 列出最近创建的容器
docker ps -n 3 # 列出最近创建的3个容器
docker ps -q # 只显示容器ID
docker ps --no-trunc # 显示当前所有正在运行的容器完整信息
删除容器
docker rm 容器ID或名称 # 删除容器
docker rm -f 容器ID或名称 # 强制删除容器
docker rm -f $(docker ps -a -q) # 删除多个容器
创建、启动容器
docker create 参数 镜像名称:标签 # 创建一个新的容器但不启动它
# 常用的参数如下:
--name # 为容器指定一个名称,启动多个时容器别名不能重复
-d # 后台运行容器,并返回容器ID,也即启动守护式容器,默认为false
-i # 以交互模式运行容器,默认为false,通常与-t同时使用
-t # 为容器重新分配一个伪输入终端,默认为false,通常与-i同时使用
-P # 随机端口映射
-p # 指定端口映射,有以下四种格式:
# ip:hostPort:containerPort
# ip::containerPort
# hostPort:containerPort
# containerPort
# 示例:docker create -it ubuntu
docker start 容器ID或名称 # 启动容器
docker restart 容器ID或名称 # 重新启动容器
docker update --restart=always 容器id # 更新容器运行参数(总是自动重启)
docker run [OPTIONS] IMAGE # 根据镜像新建并启动容器。IMAGE是镜像ID或镜像名称
# 等价于先执行 docker create 命令,再执行 docker start 命令,并且如果没有这个镜像,会先下载镜像
# OPTIONS常用参数同docker create
进入和退出容器
docker exec 参数 容器ID或名称 执行命令 # 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
# 主要参数:
# -i 打开标准输入接受用户输入命令
# -t 分配伪终端
# 示例:进入到容器中,并启动一个bash
docker attach 容器ID # 进入某个容器(使用exit退出后容器也跟着停止运行)
docker exec -it 9b /bin/bash
exit # 退出并停止容器
Ctrl+p+q # 只退出容器,不停止容器
终止容器
docker stop 容器ID或名称 # 停止容器
docker kill 容器ID或名称 # 强制停止容器
其他命令
docker rename 容器ID或名称 # 重命名一个容器
docker pause 容器ID或名称 # 暂停一个或多个容器的所有进程
docker unpause 容器ID或名称 # 恢复一个或多个容器内所有被暂停的进程
docker inspect 容器ID或名称 # 查看容器信息
docker stats 容器ID或名称 # 显示一个容器的实时资源占用
docker top 容器ID或名称 # 查看容器内运行的进程
docker logs -f -t --since --tail 容器ID或名称 # 查看容器日志
# 示例::docker logs -f -t --since=”2018-09-10” --tail=10 f9e29e8455a5
-f # 查看实时日志
-t # 查看日志产生的日期
--since # 此参数指定了输出日志开始日期,即只输出指定日期之后的日志
--tail=10 # 查看最后的10条日志
docker cp 容器ID:容器内的文件路径 宿主机路径 # 从容器内拷贝文件到宿主机
# 示例:docker cp f9e29e8455a5:/tmp/yum.log /root
docker run 参数详解
参考:https://www.h3399.cn/202001/749890.html
1, 格式
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
创建一个新的容器并运行一个命令,IMAGE是镜像ID或镜像名称
2, OPTIONS 参数
简写, 名称参数 | 默认参数 | 描述 |
---|---|---|
–add-host | 添加自定义主机到 IP 的映射(host:ip) | |
–attach , -a | 附加到 STDIN,STDOUT 或 STDERR | |
–blkio-weight | IO(相对权重),介于 10 到 1000 之间,或者为 0 禁用(默认为 0) | |
–blkio-weight-device | 块 IO 重量(相对设备重量) | |
–cap-add | 添加 Linux 功能 | |
–cap-drop | 放弃 Linux 功能 | |
–cgroup-parent | 容器的可选父 cgroup | |
–cidfile | 将容器 ID 写入文件 | |
–cpu-count | CPU 数量(仅 Windows) | |
–cpu-percent | CPU 百分比(仅 Windows) | |
–cpu-period | 限制 CPU CFS(完全公平的调度程序)期限 | |
–cpu-quota | 限制 CPU CFS(完全公平的调度程序)配额 | |
–cpu-rt-period | 限制 CPU 实时时间(以微秒为单位) | |
–cpu-rt-runtime | 限制 CPU 实时运行时间(以微秒为单位) | |
-c, –cpu-shares | CPU 份额(相对重量) | |
–cpus | CPU 数量 | |
–cpuset-cpus | 允许执行的 CPU(0-3,0,1) | |
–cpuset-mems | 允许执行的 MEM(0-3,0,1) | |
-d, –detach | 在后台运行容器并打印容器 ID | |
–detach-keys | 覆盖分离容器的键序列 | |
–device | 将主机设备添加到容器 | |
–device-cgroup-rule | 将规则添加到 cgroup 允许的设备列表中 | |
–device-read-bps | 限制从设备读取的速率(每秒字节数) | |
–device-read-iops | 限制从设备读取的速率(每秒 IO) | |
–device-write-bps | 限制对设备的写入速率(每秒字节数) | |
–device-write-iops | 限制对设备的写入速率(每秒 IO) | |
–disable-content-trust | true | 跳过图像验证 |
–dns | 设置自定义 DNS 服务器 (例如: 8.8.8.8) | |
–dns-opt | 设定 DNS 选项 | |
–dns-option | 设定 DNS 选项 | |
–dns-search | 设置自定义 DNS 搜索域 | |
–domainname | 容器 NIS 域名 | |
–entrypoint | 覆盖图像的默认 ENTRYPOINT | |
-e, –env | 设置环境变量 | |
–env-file | 读入环境变量文件 | |
–expose | 公开一个或多个端口 (8080,8081) | |
–gpus | API 1.40+GPU 设备添加到容器中(“全部” 传递所有 GPU) | |
–group-add | 添加其他群组即可加入 | |
–health-cmd | 运行命令以检查运行状况 | |
–health-interval | 运行检查之间的时间(ms | |
–health-retries | 需要连续报告不健康状况 | |
–health-start-period | API 1.29+ 容器在开始运行状况重试倒计时(ms | |
–health-timeout | 允许执行一次检查的最长时间(ms | |
–help | 打印用量 | |
-h, –hostname | 容器主机名 (例如: 例如: localhost) | |
–init | API 1.25+ 在容器内运行一个初始化程序,以转发信号并获取进程 | |
-i, –interactive | 即使未连接 STDIN 也保持打开状态(交互式执行容器) | |
–io-maxbandwidth | 系统驱动器的最大 IO 带宽限制(仅 Windows) | |
–io-maxiops | 系统驱动器的最大 IOps 限制(仅 Windows) | |
–ip | IPv4 地址(例如 172.30.100.104) | |
–ip6 | IPv6 地址(例如 2001:db8 :: 33) | |
–ipc | 使用的 IPC 模式 | |
–isolation | 集装箱隔离技术 | |
–kernel-memory | 内核内存限制 | |
-l, –label | 在容器上设置元数据 | |
–label-file | 读入行分隔的标签文件 | |
–link | 将链接添加到另一个容器 | |
–link-local-ip | 容器 IPv4 / IPv6 链接本地地址 | |
–log-driver | 容器的日志记录驱动程序 | |
–log-opt | 日志驱动程序选项 | |
–mac-address | 容器 MAC 地址(例如 92:d0:c6:0a:29:33) | |
-m,–memory | 内存限制 | |
–memory-reservation | 内存软限制 | |
–memory-swap | 交换限制等于内存加交换:“-1” 以启用无限交换 | |
–memory-swappiness | -1 | 调整容器内存交换(0 到 100) |
–mount | 将文件系统挂载附加到容器 | |
–name | 为容器分配一个名称 | |
–net | 网络模式 (host, bridge) | |
–net-alias | 为容器添加网络范围的别名 | |
–network | 网络名 (可以多个容器公用一个网络名, 这样多容器会在同一个网络环境下) | |
–network-alias | 网络别名 (未知) | |
–no-healthcheck | 禁用任何容器指定的健康检查 | |
–oom-kill-disable | 禁用 OOM 杀手 | |
–oom-score-adj | 调台主持人的 OOM 首选项(-1000 至 1000) | |
–pid | 使用的 PID 名称空间 | |
–pids-limit | 调整容器 pids 限制(将 – 1 设置为无限制) | |
–platform | 实验(守护程序)API 1.32+ 如果服务器具有多平台功能,请设置平台 | |
–privileged | 赋予此容器扩展的特权 | |
-p, –publish | 将容器的端口发布到主机(主机端口:容器端口) | |
-P, –publish-all | 将所有公开的端口发布到随机端口 | |
–read-only | 将容器的根文件系统挂载为只读 | |
–restart | no | 容器退出时重新启动策略以应用 no 默认策略,在容器退出时不重启容器 on-failure 在容器非正常退出时(退出状态非0),才会重启容器 on-failure:n 在容器非正常退出时重启容器,最多重启n次 always 在容器退出时总是重启容器 |
–rm | 退出时自动删除容器 | |
–runtime | 用于此容器的运行时 | |
–security-opt | 安全选项 | |
–shm-size | / dev / shm 的大小 | |
–sig-proxy | true | 代理接收到该过程的信号 |
–stop-signal | SIGTERM | 停止容器的信号 |
–stop-timeout | API 1.25+ 超时(以秒为单位)以停止容器 | |
–storage-opt | 容器的存储驱动程序选项 | |
–sysctl | Sysctl 选项 | |
–tmpfs | 挂载 tmpfs 目录 | |
-t, –tty | 分配伪 TTY(虚拟终端) | |
–ulimit | Ulimit 选项 | |
-u, –user | 用户名或 UID(格式:< 名称 | |
–userns | 要使用的用户名称空间 | |
–uts | 使用的 UTS 名称空间 | |
-v,–volume | 绑定挂载卷(主机目录:容器目录) | |
–volume-driver | 容器的可选音量驱动器 | |
–volumes-from | 从指定的容器挂载卷 | |
-w,–workdir | 容器内的工作目录 |
3,Command 和 Args:进程的命令和参数
# 指定了容器进程的命令为: /kube-dns,并指定了三个参数:--domain=cluster.local. --dns-port=10053 和 -v 2
docker run --name=kubedns nginx:latest /kube-dns --domain=cluster.local. --dns-port=10053 -v 2
4,案例
# 使用镜像 nginx:latest 以后台模式启动一个容器,并将容器命名为mynginx
docker run --name mynginx -d nginx:latest
# 使用镜像 nginx:latest 以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
docker run -P -d nginx:latest
# 使用镜像 nginx:latest 以后台模式启动一个容器,将容器的 80 端口映射到主机的 8080 端口,主机的目录 /data 映射到容器的 /data
docker run -p 8080:80 -v /data:/data -d nginx:latest
# 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
# 复制‘ubuntu’容器并且重命名为test且运行,然后以伪终端交互式方式进入容器,运行bash
docker run --name test -ti ubuntu /bin/bash
# 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it nginx:latest /bin/bash
# 以镜像soar/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变
docker run -d -p 2222:22 --name test soar/centos:7.1
# echo "hello world" 会覆盖 hello_jmz 的 CMD
docker run -it hello_jmz echo "hello world"
# 后台运行并打印容器 iD, 将容器的 8080 端口映射到主机的 8081, 将当前的 hosts 文件挂载到容器的 /etc/hosts, 已只读的方式挂载. 结束自动删除容器
docker run -d -p 8081:8080 -v ./hosts:/etc/hosts:ro --rm playgateway
# 容器挂掉时总是重启, 容器名为 platformui , 使用网络 my_net, 没有会创建
docker run --restart=always --network=my_net --name platformui platformpcweb
# 已交互的形式 进入 CentOS 容器, 退出后, 删除容器
docker run -it --rm CentOS bash
docker update 参数详解
更新一个或多个运行中容器的配置
OPTIONS 说明:
名称 | 描述 |
---|---|
–blkio-weight | 阻塞IO (相对权重),介于10到1000之间,0表示禁用(默认禁止) |
–cpu-period | 限制CPU CFS(完全公平的调度程序)期限 |
–cpu-quot | 限制CPU CFS(完全公平的调度程序)配额 |
–cpu-rt-period | API 1.25+ ,将CPU实时时间限制为微秒 |
–cpu-rt-runtime | API 1.25+ ,将CPU实时运行时间限制为微秒 |
–cpu-shares, -c | CPU份额(相对权重) |
–cpus | API 1.29+ ,CPU数量 |
–cpuset-cpus | 允许执行的CPU(0-3,0,1) |
–cpuset-mem | 允许执行的MEM(0-3,0,1) |
–kernel-memory | 内核内存限制 |
–memory-swap | 交换限制等于内存加交换,“-1”以启用无限交换 |
–memory-reservatio | 内存软限制 |
–memory, -m | 内存限制 |
–pids-limit | API 1.40+ ,调节容器pids限制(-1表示无限制) |
–restart | 容器退出时重新启动策略以应用 |
实例
# 更新容器的重启策略
docker update --restart=always 容器ID或名称
# 更新 CPU 共享数量
docker update --cpu-shares 512 容器ID或名称
# 更新容器内存
docker update -m 500M 容器ID或名称
策略方案
容器自动重启
docker-重启linux机器后Docker服务及容器自动启动
1、docker服务自动重启
systemctl enable docker
# 或
systemctl enable docker.service
2、容器重启,首先要保证已经设置docker服务自动重启
2.1 在启动容器时,添加–restart=always参数,如
docker run --restart=always
2.2 如果容器已经启动,可以使用命令更新参数
docker update --restart=always 容器id或名称
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112053.html