docker常用命令

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-weightIO(相对权重),介于 10 到 1000 之间,或者为 0 禁用(默认为 0)
–blkio-weight-device块 IO 重量(相对设备重量)
–cap-add添加 Linux 功能
–cap-drop放弃 Linux 功能
–cgroup-parent容器的可选父 cgroup
–cidfile将容器 ID 写入文件
–cpu-countCPU 数量(仅 Windows)
–cpu-percentCPU 百分比(仅 Windows)
–cpu-period限制 CPU CFS(完全公平的调度程序)期限
–cpu-quota限制 CPU CFS(完全公平的调度程序)配额
–cpu-rt-period限制 CPU 实时时间(以微秒为单位)
–cpu-rt-runtime限制 CPU 实时运行时间(以微秒为单位)
-c, --cpu-sharesCPU 份额(相对重量)
–cpusCPU 数量
–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-trusttrue跳过图像验证
–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)
–gpusAPI 1.40+GPU 设备添加到容器中(“全部” 传递所有 GPU)
–group-add添加其他群组即可加入
–health-cmd运行命令以检查运行状况
–health-interval运行检查之间的时间(ms
–health-retries需要连续报告不健康状况
–health-start-periodAPI 1.29+ 容器在开始运行状况重试倒计时(ms
–health-timeout允许执行一次检查的最长时间(ms
–help打印用量
-h, --hostname容器主机名 (例如: 例如: localhost)
–initAPI 1.25+ 在容器内运行一个初始化程序,以转发信号并获取进程
-i, --interactive即使未连接 STDIN 也保持打开状态(交互式执行容器)
–io-maxbandwidth系统驱动器的最大 IO 带宽限制(仅 Windows)
–io-maxiops系统驱动器的最大 IOps 限制(仅 Windows)
–ipIPv4 地址(例如 172.30.100.104)
–ip6IPv6 地址(例如 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将容器的根文件系统挂载为只读
–restartno容器退出时重新启动策略以应用
no 默认策略,在容器退出时不重启容器
on-failure 在容器非正常退出时(退出状态非0),才会重启容器
on-failure:n 在容器非正常退出时重启容器,最多重启n次
always 在容器退出时总是重启容器
–rm退出时自动删除容器
–runtime用于此容器的运行时
–security-opt安全选项
–shm-size/ dev / shm 的大小
–sig-proxytrue代理接收到该过程的信号
–stop-signalSIGTERM停止容器的信号
–stop-timeoutAPI 1.25+ 超时(以秒为单位)以停止容器
–storage-opt容器的存储驱动程序选项
–sysctlSysctl 选项
–tmpfs挂载 tmpfs 目录
-t, --tty分配伪 TTY(虚拟终端)
–ulimitUlimit 选项
-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-periodAPI 1.25+,将CPU实时时间限制为微秒
–cpu-rt-runtimeAPI 1.25+,将CPU实时运行时间限制为微秒
–cpu-shares, -cCPU份额(相对权重)
–cpusAPI 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-limitAPI 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或名称
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨鸦_Cormorant

大家喜欢的话可以点个关注投币哟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值