前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >n1.Docker命令参数一览表

n1.Docker命令参数一览表

作者头像
全栈工程师修炼指南
发布2020-10-23 17:09:58
1.9K0
发布2020-10-23 17:09:58
举报

[TOC]

0x00 docker 命令一览

Docker 命令有两大类,客户端命令和服务端命令。

  • 前者是主要的操作接口 :docker
  • 后者用来启动 Docker Daemon(守护进程): dockerd

客户端命令:

代码语言:javascript
复制
#Usage:
$docker [OPTIONS] COMMAND [arg...]
       $docker daemon [ --help | ... ]  #二级命令的帮助
       $docker [ --help | -v | --version ]
–help - Docker命令参数的帮助文档
代码语言:javascript
复制
#选项
Options:
--config=~/.$docker              Location of client config files  #客户端配置文件的位置
-D, --debug=false               Enable debug mode  #启用Debug调试模式
-H, --host=[]                   Daemon socket(s) to connect to  #守护进程的套接字(Socket)连接
-h, --help=false                Print usage  #打印使用帮助
-l, --log-level=info            Set the logging level  #设置日志级别
--tls=false                     Use TLS; implied by--tlsverify  #
--tlscacert=~/.$docker/ca.pem    Trust certs signed only by this CA  #信任证书签名CA
--tlscert=~/.$docker/cert.pem    Path to TLS certificate file  #TLS证书文件路径
--tlskey=~/.$docker/key.pem      Path to TLS key file  #TLS密钥文件路径
--tlsverify=false               Use TLS and verify the remote  #使用TLS验证远程
-v, --version=false             Print version information and quit  #打印版本信息并退出


#命令
Commands:
attach    Attach to a running container  #当前shell下attach连接指定运行镜像
build     Build an image from a $dockerfile  #通过$dockerfile定制镜像
commit    Create a new image from a container's changes  #提交当前容器为新的镜像
cp    Copy files/folders from a container to a HOSTDIR or to STDOUT  #从容器中拷贝指定文件或者目录到宿主机中
create    Create a new container  #创建一个新的容器,同run 但不启动容器
diff    Inspect changes on a container's filesystem  #查看$docker容器变化
events    Get real time events from the server#从$docker服务获取容器实时事件
exec    Run a command in a running container#在已存在的容器上运行命令
export    Export a containers filesystem as a tar archive  #导出容器的内容流作为一个tar归档文件(对应import)
history    Show the history of an image  #展示一个镜像形成历史
images    List images  #列出系统当前镜像
import    Import the contents from a tarball to create a filesystem image  #从tar包中的内容创建一个新的文件系统映像(对应export)
info    Display system-wide information  #显示系统相关信息
inspect    Return low-level information on a container or image  #提取出容器或者镜像最顶层的元数据
kill    Kill a running container  #kill指定$docker容器
load    Load an image from a tar archive or STDIN  #从一个tar包中加载一个镜像(对应save)
login    Register or log in to a $docker registry#注册或者登陆一个$docker源服务器
logout    Log out from a $docker registry  #从当前$docker registry退出
logs    Fetch the logs of a container  #输出当前容器日志信息
pause    Pause all processes within a container#暂停容器
port    List port mappings or a specific mapping for the CONTAINER  #查看映射端口对应的容器内部源端口
ps    List containers  #列出容器列表
pull    Pull an image or a repository from a registry  #从docker镜像源服务器拉取指定镜像或者库镜像
push    Push an image or a repository to a registry  #推送指定镜像或者库镜像至$docker源服务器
rename    Rename a container  # rename 重命名一个容器
restart    Restart a running container  #重启运行的容器
rm    Remove one or more containers  #移除一个或者多个容器
rmi    Remove one or more images  #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)
run    Run a command in a new container  #创建一个新的容器并运行一个命令
save    Save an image(s) to a tar archive#保存一个镜像为一个tar包(对应load)
search    Search the $docker Hub for images  #在$docker
hub中搜索镜像
start    Start one or more stopped containers#启动容器
stats    Display a live stream of container(s) resource usage statistics  #统计容器使用资源
stop    Stop a running container  #停止容器
tag         Tag an image into a repository  #给源中镜像打标签
top       Display the running processes of a container #查看容器中运行的进程信息
unpause    Unpause all processes within a container  #取消暂停容器
version    Show the $docker version information#查看容器版本号
wait         Block until a container stops, then print its exit code  #截取容器停止时的退出状态值
Run '$docker COMMAND --help' for more information on a command.  #运行$docker命令在帮助可以获取更多信息

#后台运行
ctrl + p + ctrl + q

基础实例:

代码语言:javascript
复制
# 实例1.客户端指定Docker deamon守护进程
docker -H docker.weiyigeek.top:2375
info - docker守护进程全局参数信息

描述:利用 docker info 命令 Docker Client && Docker Server 信息一览:

代码语言:javascript
复制
$docker info
Client:
 # DEBUG模式未启动
 Debug Mode: false 

Server:
# 容器数量与不同状态的数量
 Containers: 1 
  Running: 0
  Paused: 0
  Stopped: 1
# 镜像数量
 Images: 29
# 当前Docker版本
 Server Version: 19.03.9
# 存储引擎
 Storage Driver: overlay2
# 支持的文件系统建议使用xfs而非ext4
  Backing Filesystem: xfs
  Supports d_type: true
# 是否支持原生叠加Diff
  Native Overlay Diff: true
# 日志引擎
 Logging Driver: json-file
# Linux Control Groups 引擎:主要作用是限制、记录和隔离进程组(process groups)使用的物理资源(cpu、memory、IO 等)
 Cgroup Driver: cgroupfs
# 插件
 Plugins:
# 数据卷: local / nfs 
  Volume: local
# 网络选择:
  Network: bridge host ipvlan macvlan null overlay
# 支持的日志引擎
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
# Swarm 集群状态
 Swarm: inactive
# 容器运行时分类:目前使用最广泛的容器运行时。
 Runtimes: runc
 Default Runtime: runc
# 初始二进制文件
 Init Binary: docker-init
# 容器版本:Containerd向docker提供运行容器的API,二者通过grpc进行交互
 containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
# containerd最后会通过runc来实际运行容器。
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
# 初始化版本
 init version: fec3683
# 安全选项
 Security Options:
# seccomp(安全计算模式的缩写)是Linux内核的一种简单的沙箱机制。它是在Linux内核2中添加的。
  seccomp
   Profile: default
# 操作系统相关信息(系统版本、内核、架构、CPU、内存)、主机名称
 Kernel Version: 5.7.0-1.el7.elrepo.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 1.943GiB
 Name: k8s-yum-server
 ID: XVC7:JFVY:NQO4:FH7N:KIWO:Q7XI:23GJ:6SZI:QLR5:5YLI:5HII:6LQT
# Docker 根目录
 Docker Root Dir: /var/lib/docker
# 服务Debug选项
 Debug Mode: false
# 默认images仓库
 Registry: https://index.docker.io/v1/
 Labels:
# 实验性
 Experimental: false
# 私有仓库
 Insecure Registries:
  127.0.0.0/8
# 镜像Images仓库(优先级高)
 Registry Mirrors:
  https://xlx9erfu.mirror.aliyuncs.com/
# 启用在线恢复
 Live Restore Enabled: false

获取指定信息:

代码语言:javascript
复制
$docker info -f "{{.Plugins|json}}" | jq .
{
  "Volume": [
    "local"
  ],
  "Network": [
    "bridge",
    "host",
    "ipvlan",
    "macvlan",
    "null",
    "overlay"
  ],
  "Authorization": null,
  "Log": [
    "awslogs",
    "fluentd",
    "gcplogs",
    "gelf",
    "journald",
    "json-file",
    "local",
    "logentries",
    "splunk",
    "syslog"
  ]
}

由上反馈信息可以看出:

  • 使用的是overlay2存储驱动
  • docker的根目录是/var/lib/docker
  • 后端的文件系统是xfs
login - 连接并初始化hub仓库
lgout - 退出仓库连接
代码语言:javascript
复制
$docker login http://localhost:5000 #连接并初始化hub.docker.com仓库需要输入用户名和密码认证,然后存放于/root/.docker/config.json 文件中直接更改也行
$docker login -u 用户名 -p 密码 https://index.docker.io/
# 密码标准输入
$cat ~/my_password.txt | docker login --username foo --password-stdin

$docker logout
search - 公共镜像搜索
代码语言:javascript
复制
# 基础语法
$docker search [镜像名称] #搜索关于Archlinux镜像
# 支持的参数:
# --automated=false #仅仅显示自动创建的镜像(官方)
# --no-trunc=false  #输出信息不截断显示
# -s,--stars=0    #指定仅显示评价为指定星级以上的镜像

# 基础实例
$docker search -s 10 ubuntu  #搜索那些被收藏10次以上的ubuntu镜像
images - 本机镜像信息
代码语言:javascript
复制
$docker image ls   #列出本机已有镜像
$docker images -f [过滤]   #列出本机已有镜像
# -q, --quiet Only show numeric IDs
# -f,--filter 过滤器参数
# --digests 镜像寻址识别符
# --format 以特定的格式显示 "table {{.ID}}} {{.Repository}}{{.Tag}}"

# 基础实例
$docker image ls  # 查看本地所有镜像
$docker images    # 查看docker镜像效果同上

$docker images -f since=mongo:3.2  #看到在mongo:3.2 之后建立的镜像
$docker images -f before=mongo:3.2  #看到在mongo:3.2 之前建立的镜像
$docker images -f label=com.example.version=0.1 #如果镜像构建时,定义了 LABEL ,还可以通过 LABEL 来过滤。
$docker images --format "{{.ID}}: {{.Repository}}" #直接列出镜像结果,并且只包含镜像ID和仓库名
# d06214a03e27: onlyoffice/documentserver
# 0301fb9a773e: ldapaccountmanager/lam
# e340e61b03c4: osixia/phpldapadmin
# 4c780dfa5f5e: osixia/openldap

docker images -q -f "dangling=true"   #只显示悬空镜像数字id
docker image ls -q -f "dangling=true" #效果同上
# 30a048249000
# b38cf44fda73

docker images --digests alpine #显示镜像内容寻址识别符
# REPOSITORY                  TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
# osixia/openldap             latest              sha256:9cf1631238e606cf8b58e4654b26e6eba7182eadafefffa662cd9784ea811eda   4c780dfa5f5e        9 months ago        275MB
# $docker inspect 4c7 | grep -a5 "9cf1631238e6" # 对应着内容识别符
# "RepoDigests": [
#             "osixia/[email protected]:9cf1631238e606cf8b58e4654b26e6eba7182eadafefffa662cd9784ea811eda"
#         ],

docker image rmi hello-docker #删除指定的hello-docker镜像

docker image prune #虚悬镜像清理
# WARNING! This will remove all dangling images.
# Are you sure you want to continue? [y/N] y
# Deleted Images:
# deleted: sha256:30a048249000dd36561bffaa9fecc7690a45ef12096849c77afd4543b0d2d9b0
pull - 镜像拉取
push - 镜像上传
代码语言:javascript
复制
# 基础语法
$docker pull username/[repository[:tag]] #获取Hub镜像如果不指定TAG将默认选择仓库中最新颁布的镜像
$docker push dockerHub用户/[images[:tag]]  #上传镜像到docker hub仓库

# 基础示例
docker push WeiyiGeek/alpine-app:v1.0
docker push hub.WeiyiGeek.cn:5000/alpine-app:v1.0
history - 镜像修改信息查看
代码语言:javascript
复制
$docker history docker.io/mysql:5.7            #查看镜像修改记录
$docker history --no-trunc docker.io/mysql:5.7 #查看镜像修改记录具体信息(不截断显示)
commit - 容器修改提交
代码语言:javascript
复制
# 基础语法
$docker commit [option-选项] ContainerId [Repository[:Tag]]
$docker commit -m "xx" -a "oo" ContainerID(被修改过的ID) [Repository[:Tag]] 
# -a,--author="作者"
# -m,--message="更改信息"
# -p,--pause=ture 提交时暂停容器Container运行

# 基础示例
docker commit -a "WeiyiGeek" -m "create /tmp/demo directory" alpine test:1.2 #防止悬空镜像加上镜像名称
tag - 镜像标签修改
代码语言:javascript
复制
# 基础语法
$docker tag 原仓库[:标签] 新仓库名[:标签]  #为本地镜像添加一个新标签 [注意仓库名称必须小写]
$docker tag <image id> username/name:devel #修改镜像的标签

# 实际案例
docker tag alpine:latest hub.weiyigeek.top:5000/alpine-app:v8.5
container - 容器查看与管理
代码语言:javascript
复制
$docker container ls -a  #查看列出运行的容器
$docker container stop onlyoffice  #停止正在运行的容器 docker stop 容器名称 效果相同
$docker container rm -v onlyoffice #删除已停止的容器机器和删除与容器关联的匿名卷 docker rm -v 容器名称 效果相同
ps - 容器相关信息进行查看

基础语法:

代码语言:javascript
复制
--format 为格式化输出。格式化选项(-format) 使用go模板来美化打印容器输出

# 补充说明:
# 过滤器:过滤标志(-f或-filter)格式为key=value,如果超过一个过滤,就传递多个标志(如-filter "foo=bar" -filter "bif=baz")
id (容器的id)
label
name(容器名称)
exited (整数-容器退出状态码,只有在使用-all才有用)
status 容器状态(created,restarting,running,paused,exited,dead)
ancestor ([:],or) 过滤从指定镜像创建的容器
before (容器的名称或id),过滤在给定id或名称之后创建的容器
isolation (default process hyperv) (windows daemon only)
volume (数据卷名称或挂载点),--过滤挂载有指定数据卷的容器
network192.(网络id或名称),过滤连接到指定网络的容器

# go模板
.ID 容器的ID
.Image 镜像的ID
.Command  容器启动的命令
.CreatedAt 创建容器的时间点
.RunngingFor 从容器创建到现在过去的时间
.Ports 暴露的端口
.Status 容器的状态
.Size 容器硬盘的大小
.Names 容器的名称
.Label 指定label的值
.Mounts 挂载到这个容器的数据卷名称

基础实例:

代码语言:javascript
复制
# 实例1.显示本机上的所有容器ID运行的容器ID信息
$docker ps -aq --no-trunc  
# -a 可以列出所有容器
# -l 可以列出最后一次运行的容器-历史运行
# -q 可以列出容器ID
#--no-trunc  #显示完整的容器ID

# 实例2.基础用法
docker ps -aq    #显示所有容器的ID
# 25d2d645bfc9
# dc1cc7e934aa
# f07e2b606e62
# 4a1a157c5e70

# 3.
docker ps -q -f status=exited      #显示状态为已退出的容器
docker container ps -f "name=myimg" #过滤容器名字为myimg的容器
attach - 容器附加top信息查看
代码语言:javascript
复制
$docker attach [names]  #采用 ps -a NAMES 进入容器
stats - 容器监控资源信息查看
代码语言:javascript
复制
$docker stats  #查看容器监控资源信息(cpu 内存 网络流量等)
# CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O  PIDS
# 89bc1cc2018b        nostalgic_easley    0.02%               64KiB / 1.795GiB    0.00%               1.31kB / 0B         0B / 0B     1
top - 查看容器进程信息
代码语言:javascript
复制
$docker top <container id|name>  
# UID                 PID                 PPID                C                   STIME               TTY                 TIME         CMD
# root                15890               15873               0                   09:36               pts/0               00:00:00     top
port - 容器端口查看
代码语言:javascript
复制
$docker port [容器名称] [内部端口]  #查看映射端口

基础示例:

代码语言:javascript
复制
# 示例1
docker port ldap-account-manager
# 80/tcp -> 0.0.0.0:8081

# 示例2
docker port ldap-account-manager 80
# 0.0.0.0:8081
inspect - 镜像与容器相关信息查看
代码语言:javascript
复制
# 基础语法
$docker inspect [image id|image name|CONTAINER ID | CONTAINER NAME]   #获取镜像或者容器的详细信息

# (1) 参数`-f`获取单个属性返回JSON采用go模板语法
$docker inspect -f {{".Architecture"}} 550 #(images Id 前面3位)        
$docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID or NAME>

# (2) 获取一个实例的MAC地址
$docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID 

# (3) 获取绑定的映射的宿主机与虚拟机目录
$docker inspect data-volume -f 'Source:{{(index .Mounts 0).Source}}{{println}}Destination:{{(index .Mounts 0).Destination}}'
$docker inspect data-volume-1 -f '{{printf "Source:%s ----  Destination:%s" (index .Mounts 0).Source (index .Mounts 0).Destination}}'
# Source:/tmp/mnt_isolation ----  Destination:/tmp/tar/tmp/container/folder


# (4) 列出所有端口绑定
$docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' dc1
# 80/tcp -> 8081

# (5)主机信息
docker inspect --format 'Hostname:{{ .Config.Hostname }}  Name:{{.Name}} IP:{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dc1
# Hostname:dc1cc7e934aa  Name:/ldap-account-manager IP:172.18.0.2

# (6) 获取JSON格式的分段
$docker inspect --format='{{json .Config.Env}}' dc1 | jq .
[
  "PHPLDAPADMIN_HTTPS=false",
  "PHPLDAPADMIN_LDAP_HOSTS=ldap-host",
  "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
  "DEBIAN_FRONTEND=noninteractive",
  "DEBUG="
]

# (7) swarm中获取获取service实例的Ip 
$docker inspect ` docker service ps my-test -q` --format '{{range .NetworksAttachments}}{{.Addresses}}{{end}}' | cut -d '[' -f2|cut -d ']' -f1
# 10.255.0.7/16
# 10.255.0.8/16
# 10.255.0.9/16
 
# (8) 获取service示例的container ID  (获取的是ID的全称,一般只要取ID前面12个字符就可以了)
$docker inspect ` docker service ps my-test -q` --format '{{ .Status.ContainerStatus.ContainerID }}'
# c6c18a74a465163757fe928fec9e633223200f92d1c59e5d2d77eabfaa5ae93a
# 5f558bb014ea3d3eef5c8d4bd70e2e3048d7fc6725538303be960ac658d93b32
# dde578bf60190a63ed5c8c
create - 创建容器
代码语言:javascript
复制
$docker create -it repository[:tag] #创建容器但处于停止状态
start - 启动容器
stop - 停止容器
pause - 暂停容器
unpause - 恢复容器
restart - 停止容器
代码语言:javascript
复制
$docker start -a -i <container id|name>   # 启动指定容器
# -a 参数   连接容器并打印输出或错误 -
# -i 参数   启动容器并进入交互模式

$docker stop    <container id|name>  #停止容器
$docker restart <container id|name>  #重启容器
$docker pause   <container id|name> #暂停容器
$docker unpause <container id|name> #恢复容器
kill - 强行终止容器
代码语言:javascript
复制
$docker kill <cantainer id>  #强行终止容器可以直接发送SIGKILL信号来终止容器
save - 镜像导出 (带有原始layer信息)
load - 镜像导入
export - 容器导出 (不带原始layer信息且只有一层)
import - 容器导入
代码语言:javascript
复制
$docker save -o 保存文件名.tar  [repository[:tag]]  #将镜像文件打包存出到磁盘
$docker save [repository[:tag]] > 保存文件名 #将镜像文件打包存出到磁盘
$docker load -i 保存文件名.tar   # --input 将打包的镜像文件进行载人
$docker load < 保存文件名.tar
$docker export <container id|name> >导出文件.tar  #导出容器
$docker import - repository[:tag] #导入容器
rename - 容器名称重命名
代码语言:javascript
复制
$docker rename my-nginx new-nginx
run - 运行容器
代码语言:javascript
复制
# 基础语法
$docker run [组织名称]/<镜像名称>:[镜像标签]
# run参数使用解析如下:#
# -e 参数指定环境变量 VARIABLE=VALUE 也可采用 -env-file=FILE 设置文件
# -i 让容器的标准输入保持打开
# -t 让$docker分配一个伪终端ptty,并绑定到容器的标准输入上
# -d 即--detach参数即可后台运行,用户无法看到容器中的信息
# -c 运行一段shell命令  "while true;do echo 正在运行; sleep 1;done"  
# -h HOSTNAME 或者 --hostname=HOSTNAME 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
# -v 设置宿主机映射到容器中的目录
# --rm 添加这个标记,容器会在停止后立即删除自身  (注意:与-d不能同时使用)
# --name 使用--name web 标记可以为容器重新命名
# --restart always|no|on-failure  容器出错自动重启(Docker 自启时候也启动)
# --network | --net=bridge|none|container:NAME_or_ID|host 配置容器的桥接模式
# --volumes-from [数据卷名称]  #挂载的已存在的数据卷
# --mount #挂载数据卷到容器之中 type=bind,source=/src/webapp,target=/opt/webapp,readonly

# -c|--cpu-shares[=0]   #调整容器使用 CPU 的权重
# --cpus decimal        #cpu的数量
# --cpuset-cpus="0"     #允许执行的cpu (0-3,0,1)
# --cpuset-mems="0"     #允许执行的MEMs (0-3,0,1)
# --cpu-period=1000000    #限制CPU CFS(完全公平调度程序)周期
# --cpu-quota=950000      #限制CPU CFS(完全公平调度程序)配额
# --cpu-rt-period 1000000 #以微秒为单位限制CPU实时周期
# --cpu-rt-runtime 950000 #以微秒为单位限制CPU实时运行时


# -m|--memory[=MEMORY]  #调整容器使用内存的大小 # -m 128m 指定容器运行内存为128m
# --memory-swap=125M    #交换内存的限制 

# --entrypoint 在容器中执行指定的应用
# --dns=IP_ADDRESS 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
# --dns-search=DOMAIN 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。
# --link=CONTAINER_NAME:ALIAS 添加到另一个容器的连接

基础实例

代码语言:javascript
复制
docker -H docker.weiyigeek.top:2375 run -itd alpine sh    #指定守护进程运行alpine容器进行交互式界面
docker run --name hello hello-world  "while true;do echo 正在运行; sleep 1;done"  #运行hello-world镜像,产生一个容器名称hello实例(也可以通过镜像id前三位运行)
docker run -d -p 5000:5000 -restart always --name docker-repository registry /bin/sh -C "echo hello word"  #守护态运行容器,当重启docker守护进程时容器将自动启动
docker run --entrypoint htpasswd registry -Bbn testuser testpassword  #在registry中执行htpasswd且-Bbn为参数;
docker run -it --rm host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu #为运行的容器指定dns服务器

docker run -ti --name test --ulimit nproc=65535 centos:7   #在启动前来指定容器中ulimit nproc大小(ulimt -u进行查看)
exec - 在已运行的容器中执行命令
代码语言:javascript
复制
# 基础语法
$docker exec -it <Container-id>  /bin/bash  #$docker exec 至1.3版本起可以在容器中运行命令

# 基础实例
docker exec -it openldap bash
# [email protected]:/# whoami
# root
update - 更新一个或多个容器的配置

基础语法:

代码语言:javascript
复制
Usage:  docker update [OPTIONS] CONTAINER [CONTAINER...]
Options:
      --blkio-weight uint16        Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --cpu-period int             Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int              Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int          Limit the CPU real-time period in microseconds
      --cpu-rt-runtime int         Limit the CPU real-time runtime in microseconds
  -c, --cpu-shares int             CPU shares (relative weight)
      --cpus decimal               Number of CPUs
      --cpuset-cpus string         CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string         MEMs in which to allow execution (0-3, 0,1)
      --kernel-memory bytes        Kernel memory limit
  -m, --memory bytes               Memory limit
      --memory-reservation bytes   Memory soft limit
      --memory-swap bytes          Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --pids-limit int             Tune container pids limit (set -1 for unlimited)
      --restart string             Restart policy to apply when a container exits

基础示例:

代码语言:javascript
复制
$docker update --restart=[always|no|on-failure] 容器ID|容器名称 #更改容器启动模式
cp - 容器与宿主机文件复制

基础示例:

代码语言:javascript
复制
$docker cp containerID[names]:/home/1.php /opt/php/   #把容器的1.php拷贝到宿主机opt目录
$docker cp opt/php/config.php container[ID|names]:/home/  #把宿主机的config.php拷贝到容器
logs - 容器日志持续查看

基础语法:

代码语言:javascript
复制
# -f, --follow     跟踪实时日志
# -t, --timestamps 显示时间戳
# --details        显示更多的信息
# --tail string    从日志末尾显示多少行日志, 默认是all
# --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
# --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

基础示例:

代码语言:javascript
复制
$docker logs -f <Container-id>      #获取容器的输出信息 -f 不间断的显示容器日志
$docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID #查看指定时间后的日志,只显示最后100行
$docker logs --since 30m CONTAINER_ID #查看最近30分钟的日志
$docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID #查看某时间段日志
rmi - 本地镜像删除
rm - 删除本地已已停止的容器

基础语法:

代码语言:javascript
复制
Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]
Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...] # 只有 -f | --no-prune 两个参数

# 参数:
# -f,--force=false 强制终止并删除一个运行中的容器[默认会发生SIGKILL信号]
# -l,--link=false  删除容器连接但保留容器
# -v,--volumes=false  同时删除容器挂载的数据卷

基础示例:

代码语言:javascript
复制
# 示例1
$docker rm <container id|name>           #删除容器删除依赖该镜像的容器ID,前3位即可
$docker rm -vf [<image id>|<repository>  #删除容器以及数据卷
$docker rmi [<image id>|<repository> ]   #删除镜像 镜像id|仓库名称
$docker rmi -f <images id>               #不建议强行删除正在容器中运行的镜像文件

# 示例2
docker rmi -f test1:1.1
Untagged: test:1.1
Deleted: sha256:b38cf44fda73f18ffe7a32047d206d5bb974d10b2f64515c4de25cfa3dbe2b47
volume - 数据卷创建与管理

基础语法:

代码语言:javascript
复制
Usage:  docker volume COMMAND
#COMMAND
# create      Create a volume
# inspect     Display detailed information on one or more volumes
# ls          List volumes
# prune       Remove all unused local volumes
# rm          Remove one or more volumes

基础示例:

代码语言:javascript
复制
$docker volume create my-vol #创建一个数据卷
$docker volume ls #查看数据线卷
$docker volume inspect 5be64caf #数据卷信息
build - 基于Dockerfile镜像构建

基础语法:

代码语言:javascript
复制
#-t 指定仓库名和版本号
#-f 指定docker文件
#--target 指定构建xxx阶段
#--no-cache=true  构建阶段不使用缓存,即映像层不复用

基础实例:

代码语言:javascript
复制
$docker build --target=builder -t weiyigeek/repo:version -f DockerFile .  #dockerfile编译,非常注意上下文
network - 容器网络设置

基础语法:

代码语言:javascript
复制
#-d 参数指定 Docker 网络类型,有 bridge 、 overlay(用于Swarm mode)

基础示例:

代码语言:javascript
复制
# 示例0.Docker网卡查看与网络类型详情
docker network 
docker network inspect $(docker network ls -q)

# 示例1.创建指定类型的网络
$docker network create -d bridge [网络名称]

# 示例2.命令会在所连接的容器中创建新的网卡,以完成其与所指定网络的连接。
$docker network connect  
$docker network connect frontend c2
swarm - 集群初始操作及其管理

基础实例:

代码语言:javascript
复制
# 建立swarm集群管理端
docker swarm init --advertise-addr 10.20.172.122

# 工作端加入到swarm集群中
docker swarm join --token SWMTKN-1-0w8bvf8gzw5hct845izbv38qvl45385r19p4gwo0v8fuwie68g-603ibqyz4od3mmnw1gmbahd8v 10.10.107.245:2377
node - 集群中机器节点查看

基础实例:

代码语言:javascript
复制
# 1.节点信息一览以及swarm控制者查看
$ docker node ls
# ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
# tqulwewuzrgayabjomy3xw55u *   node2               Ready               Active              Leader(领导者)      19.03.12
# 7vp6qrabwp7ee2dkq0d1bf11l     worker-01           Ready               Active                                  19.03.12


# 2.排空节点上的集群容器 
[email protected]:~$docker node update --availability drain j5auh1zg6qzvmzkf80wvpl9hr
stack - 集群中应用构建管理以及查看

基础实例:

代码语言:javascript
复制
# 1.在swarm集群中部署各个应用
docker stack deploy -c docker-compose.yml swarm-python-web

# 2.swarm 集群信息与swarm-python-web服务应用信息
docker stack ls
# NAME                SERVICES            ORCHESTRATOR
# swarm-python-web    1                   Swarm

# 3.应用信息服务查看
docker stack services swarm-python-web
# ID                  NAME                   MODE                REPLICAS            IMAGE               PORTS
# bzeeucg6n6s1        swarm-python-web_web   replicated          5/5                 python-web:latest   *:80->8080/tcp

# 4.应用启动后的集群中各个节点里运行的容器状态
docker stack ps swarm-python-web
# ID                  NAME                     IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
# xv3doqj787ae        swarm-python-web_web.1   python-web:latest   worker-02           Running             Running 5 minutes ago
# njkppsnrf4nc        swarm-python-web_web.2   python-web:latest   worker-01           Running             Running 5 minutes ago

# 5.删除在集群中部署的应用以及退出集群:
$docker stack rm $(docker stack ls --format "{{.Name}}")
Removing service swarm-python-web_web
Removing network swarm-python-web_webnet

# 6.控制节点或者工作节点退出swarm集群
docker swarm leave --force
Node left the swarm.
service - 查看swarm集群中的相关信息

基础示例:

代码语言:javascript
复制
# 示例1.获取service实例的Ip
[[email protected] ~]$ docker service ps my-test 
ID                    NAME       IMAGE                                                   NODE                         DESIRED   STATE  CURRENT STATE    ERROR  PORTS
t71gqufekv2o  my-test.1  172.16.60.214:5000/kevin_nginx:latest  swarm-node2              Running    Running 16 seconds ago        
9cuq2yf10d60 my-test.2  172.16.60.214:5000/kevin_nginx:latest  swarm-manager-node  Running   Running 16 seconds ago        
srt2yo817kpv  my-test.3  172.16.60.214:5000/kevin_nginx:latest  swarm-node1               Running    Running 16 seconds ago

基础命令:

代码语言:javascript
复制

#镜像容器查看#

#数据卷资源共享#

#镜像仓库删除#

#镜像导入导出#

#容器自动更新设置(不自启)

#容器日志查看#

#网络建设#

#系统清理#
$docker image prune # 删除 dangling 或所有未被使用的镜像 <none> 这样的镜像文件
$docker container prune # 删除所有退出状态的容器
$docker volume prune # 删除未被使用的数据卷(#无主的数据卷可能会占据很多空间,要清理请使用以下命令)
$docker system prune  #清除容器缓存(包括停止的容器)

实际案例:

代码语言:javascript
复制
$docker container ls  当前正在运行的容器
$docker ps  #列出正在运行的容器(如果创建容器中没有进程正在运行,容器就会立即停止)
$docker ps -a  # 列出所有运行过的容器记录
$docker save centos > /opt/centos.tar.gz  # 导出$docker镜像至本地
$docker load < /opt/centos.tar.gz   #导入本地镜像到$docker镜像库
$docker stop  `$docker ps -aq`  # 停止所有正在运行的容器
$docker rm `$docker ps -aq`    # 一次性删除所有容器记录
$docker rm $(docker ps -q -f status=exited)  #删除已退出的镜像
$docker rmi  `$docker images -aq`   # 一次性删除所有本地的镜像记录
$docker rmi $(docker images --filter "dangling=true" -q  --no-trunc) #
$docker rmi $(docker images -q -f "dangling=true")  #删除没有运行的虚悬镜像(<none>)

#数据卷
$docker volume ls  #列出数据卷。
$docker volume rm $(docker volume ls -qf dangling=true)

$docker network ls  #网络连接类型以及ID

删除容器:docker container rm $(docker container ls -a -q)
删除镜像:docker image rm $(docker image ls -a -q)
删除数据卷:docker volume rm $(docker volume ls -q)
删除网络:network rm $(docker network ls -q)

#执行这个命令前系统中所有的容器都已停止,那么这个命令就会移除所有的资源
$ docker system prune --all --force --volumns
#首先使用最简单的方法,清理当前未运行的所有$docker容器,写入到用户的 ~/.bashrc 文件中就可以了!
alias docker-clean-unused='docker system prune --all --force --volumes'
alias docker-clean-all='docker stop $(docker container ls -a -q) && docker system prune --all --force --volumes'
$ docker system df -v #列出每个镜像,容器,数据卷,缓存占用的磁盘空间;

Images space usage:
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE                SHARED SIZE         UNIQUE SIZE         CONTAINERS
test                        1.2                 30a048249000        43 minutes ago      7.374MB             7.374MB   
Containers space usage:
CONTAINER ID        IMAGE                    COMMAND                  LOCAL VOLUMES       SIZE                CREATED             STATUS                      NAMES
39e4f473e34f        test1                    "top -b sh"              0                   0B                  56 minutes ago      Exited (1) 56 minutes ago   unruffled_bhabha
Local Volumes space usage:

VOLUME NAME                                                        LINKS               SIZE
a4974599165f539b98fd57fc53ccc073a7e8cdf4cd36cbc5e349fb8d4f6a1325   0                   2.51MB


#docker 容器自启动设置
docker run -–restart=always
#假如此时你的容器已经启动可以通过update命令进行修改,两种方式都可以;
docker update -–restart=always redis
docker update -restart=no mysql8.x
docker container update --restart=always 容器名字
Docker 命令结构图示
WeiyiGeek.命令一张图表示
WeiyiGeek.命令一张图表示

WeiyiGeek.命令一张图表示

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 docker 命令一览
    • –help - Docker命令参数的帮助文档
      • info - docker守护进程全局参数信息
        • login - 连接并初始化hub仓库
          • lgout - 退出仓库连接
            • search - 公共镜像搜索
              • images - 本机镜像信息
                • pull - 镜像拉取
                  • push - 镜像上传
                    • history - 镜像修改信息查看
                      • commit - 容器修改提交
                        • tag - 镜像标签修改
                          • container - 容器查看与管理
                            • ps - 容器相关信息进行查看
                              • attach - 容器附加top信息查看
                                • stats - 容器监控资源信息查看
                                  • top - 查看容器进程信息
                                    • port - 容器端口查看
                                      • inspect - 镜像与容器相关信息查看
                                        • create - 创建容器
                                          • start - 启动容器
                                            • stop - 停止容器
                                              • pause - 暂停容器
                                                • unpause - 恢复容器
                                                  • restart - 停止容器
                                                    • kill - 强行终止容器
                                                      • save - 镜像导出 (带有原始layer信息)
                                                        • load - 镜像导入
                                                          • export - 容器导出 (不带原始layer信息且只有一层)
                                                            • import - 容器导入
                                                              • rename - 容器名称重命名
                                                                • run - 运行容器
                                                                  • exec - 在已运行的容器中执行命令
                                                                    • update - 更新一个或多个容器的配置
                                                                      • cp - 容器与宿主机文件复制
                                                                        • logs - 容器日志持续查看
                                                                          • rmi - 本地镜像删除
                                                                            • rm - 删除本地已已停止的容器
                                                                              • volume - 数据卷创建与管理
                                                                                • build - 基于Dockerfile镜像构建
                                                                                  • network - 容器网络设置
                                                                                    • swarm - 集群初始操作及其管理
                                                                                      • node - 集群中机器节点查看
                                                                                        • stack - 集群中应用构建管理以及查看
                                                                                          • service - 查看swarm集群中的相关信息
                                                                                          • Docker 命令结构图示
                                                                                          相关产品与服务
                                                                                          容器服务
                                                                                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                                                          领券
                                                                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档