docker常用命令汇总

docker常用命令汇总

1. docker命令归类

生命周期管理

docker [run| start| stop| restart| kill| rm| pause| unpause]

容器操作管理

docker [ps | inspect| top| attach| logs| events| wait| port| export]

容器rootfs命令

docker [commit| cp| diff]

镜像仓库管理

docker [login| pull| push| search]

本地镜像管理

docker [images| rmi| tag| build| history| save| import]

others

docker [info |version]

2. 命令用法和示例

build

说明: 通过Dockerfile创建镜像
语法:docker build [OPTIONS] PATH | URL | -
示例:docker build -t helloworld:0.0.1 .


images

说明: 列出本地所有的镜像
语法:docker images [OPTIONS] [REPOSITORY[:TAG]]
示例:docker images


start/stop/restart

说明: 启动、停止、重启一个容器
语法:docker start/stop/restart [OPTIONS] CONTAINER [CONTAINER...]
示例:docker start/stop/restart myrunoob


attach

说明: 将终端依附到容器上
语法:docker attach [OPTIONS] CONTAINER
示例:docker attach my_container


exec

说明: 对一个启动的容器执行命令
语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
示例:

# 交互式终端操作ID为ab328d51ab46的容器 
docker exec -it ab328d51ab46 bash 
# 在容器mynginx中以交互模式执行容器内/root/runoob.sh脚本 
docker exec -it mynginx /bin/sh /root/runoob.sh 

commit

说明: 通过容器创建本地镜像
语法: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
示例: docker commit centos_v1 centos:v1


cp

说明: 在宿主机和容器之间相互拷贝文件
语法:

  1. docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
  2. docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

示例:

# 容器mysql中/usr/local/bin/docker-entrypoint.sh文件,可如下方式copy到宿主机
docker cp mysql:/usr/local/bin/docker-entrypoint.sh /root
# 将该文件重新copy回容器
docker cp /root/docker-entrypoint.sh mysql:/usr/local/bin/ 

create

说明: 仅创建一个容器
语法: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
示例:


# 使用镜像nginx:latest创建一个容器,并将容器命名为
myrunoob docker create --name myrunoob nginx:latest 

rm

说明: 删除一个或多个容器
语法:docker rm [OPTIONS] CONTAINER [CONTAINER...]
示例:

# 移除全部容器 
docker rm $(docker ps -a -q) 
# 强制删除容器db01、db02 
docker rm -f db01、db02 
# 移除容器nginx01对容器db01的连接,连接名db 
docker rm -l db 
# 删除容器nginx01,并删除容器挂载的数据卷 
docker rm -v nginx01 


rmi

说明: 删除一个或多个镜像
语法:docker rmi [OPTIONS] IMAGE [IMAGE...]
示例:

# 移除镜像之前需要停止并移除要删除镜像对应的容器。 
# 停止全部容器 
docker stop $(docker ps -a -q) 
# 移除全部容器 
docker rm $(docker ps -a -q) 
# 移除对应的ID 
docker rmi imageID 

run

说明: 创建并启动一个容器,等同于docker create + docker start命令
语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
示例:

# 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。 
docker run --name mynginx -d nginx:latest 
# 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。 
docker run -P -d nginx:latest 
# 以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。 
docker run -P -d nginx:latest 
# 以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data。 docker run -p 80:80 -v /data:/data -d nginx:latest 
# 以交互模式启动一个容器,在容器内执行/bin/bash命令。 
docker run -it nginx:latest /bin/bash 

tag

说明: 标记本地镜像,将其归入某一个仓库。
语法:docker tag IMAGE[:TAG] IMAGE[:TAG]
示例:

# 将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像 
docker tag ubuntu:15.10 runoob/ubuntu:v3 

swarm

说明: 管理docker swarm 。
语法:docker swarm COMMAND
示例:

# 初始化swarm manager并制定网卡地址 
docker swarm init --advertise-addr 192.168.10.117 
# 强制删除集群,如果是manager,需要加–force 
docker swarm leave --force 
docker node rm docker-118
# 查看swarm worker的连接令牌 
docker swarm join-token worker 
# 查看swarm manager的连接令牌 
docker swarm join-token manager 
# 使旧令牌无效并生成新令牌 
docker swarm join-token --rotate
# 加入docker swarm集群 
docker swarm join --token SWMTKN-1-5d2ipwo8jqdsiesv6ixze20w2toclys76gyu4zdoiaf038voxj-8sbxe79rx5qt14ol14gxxa3wf 192.168.10.117:2377
# 查看集群中的节点 
docker node ls
# 查看集群中节点信息 
docker node inspect docker-117 --pretty 
# 调度程序可以将任务分配给节点 
docker node update --availability active docker-118 
# 调度程序不向节点分配新任务,但是现有任务仍然保持运行 
docker node update --availability pause docker-118 
# 调度程序不会将新任务分配给节点。调度程序关闭任何现有任务并在可用节点上安排它们 
docker node update --availability drain docker-118
# 添加节点标签 
docker node update --label-add label1 --label-add bar=label2 docker-117 
# 删除节点标签 
docker node update --label-rm label1 docker-117 
# 将节点升级为manager 
docker node promote docker-118 
# 将节点降级为worker 
docker node demote docker-118
# 查看服务列表 
docker service ls 
# 查看服务的具体信息 
docker service ps redis 
# 创建一个不定义name,不定义replicas的服务 
docker service create nginx 
# 创建一个指定name的服务 
docker service create --name my_web nginx 
# 创建一个指定name、run cmd的服务 
docker service create --name helloworld alping ping docker.com 
# 创建一个指定name、version、run cmd的服务 
docker service create --name helloworld alping:3.6 ping docker.com 
# 创建一个指定name、port、replicas的服务 
docker service create --name my_web --replicas 3 -p 80:80 nginx 
# 为指定的服务更新一个端口 
docker service update --publish-add 80:80 my_web 
# 为指定的服务删除一个端口 
docker service update --publish-rm 80:80 my_web 
# 将redis:3.0.6更新至redis:3.0.7 
docker service update --image redis:3.0.7 redis 
# 配置运行环境,指定工作目录及环境变量 
docker service create --name helloworld --env MYVAR=myvalue --workdir /tmp --user my_user alping ping docker.com 
# 创建一个helloworld的服务 
docker service create --name helloworld alpine ping docker.com 
# 更新helloworld服务的运行命令 
docker service update --args “ping www.baidu.com” helloworld 
# 删除一个服务 
docker service rm my_web 
# 在每个群组节点上运行web服务 
docker service create --name tomcat --mode global --publish mode=host,target=8080,published=8080 tomcat:latest 
# 创建一个overlay网络 
docker network create --driver overlay my_network docker network create --driver overlay --subnet 10.10.10.0/24 --gateway 10.10.10.1 my-network 
# 创建服务并将网络添加至该服务 
docker service create --name test --replicas 3 --network my-network redis
# 删除群组网络 
docker service update --network-rm my-network test 
# 更新群组网络 
docker service update --network-add my_network test 
# 创建群组并配置cpu和内存 
docker service create --name my_nginx --reserve-cpu 2 --reserve-memory 512m --replicas 3 nginx 
# 更改所分配的cpu和内存 
docker service update --reserve-cpu 1 --reserve-memory 256m my_nginx
# 指定每次更新的容器数量 
--update-parallelism 
# 指定容器更新的间隔 
--update-delay 
# 定义容器启动后监控失败的持续时间 
--update-monitor
# 定义容器失败的百分比 
--update-max-failure-ratio 
# 定义容器启动失败之后所执行的动作
--update-failure-action
# 创建一个服务并运行3个副本,同步延迟10秒,10%任务失败则暂停 
docker service create --name mysql_5_6_36 --replicas 3 --update-delay 10s --update-parallelism 1 --update-monitor 30s --update-failure-action pause --update-max-failure-ratio 0.1 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36
# 回滚至之前版本 
docker service update --rollback mysql
# 自动回滚。如果服务部署失败,则每次回滚2个任务,监控20秒,回滚可接受失败率20%
docker service create --name redis --replicas 6 --rollback-parallelism 2 --rollback-monitor 20s --rollback-max-failure-ratio .2 redis:latest 
# 创建服务并将目录挂在至container中 
docker service create --name mysql --publish 3306:3306 --mount type=bind,src=/data/mysql,dst=/var/lib/mysql --replicas 3 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36
########################################################################
# Bind带来的风险 
# 1、绑定的主机路径必须存在于每个集群节点上,否则会有问题 
# 2、调度程序可能会在任何时候重新安排运行服务容器,如果目标节点主机变得不健康或无法访问 
# 3、主机绑定数据不可移植,当你绑定安装时,不能保证你的应用程序开发方式与生产中的运行方式相同
########################################################################
# 添加swarm配置 
echo "this is a mysql config" | docker config create mysql - 
# 查看配置 
docker config ls 
# 查看配置详细信息 
docker config inspect mysql 
# 删除配置 
docker config rm mysql 
# 添加配置
docker service update --config-add mysql mysql 
# 删除配置
docker service update --config-rm mysql mysql 
# 添加配置
docker config create homepage index.html
# 启动容器的同时添加配置 
docker service create --name nginx --publish 80:80 --replicas 3 --config src=homepage,target=/usr/share/nginx/html/index.html nginx


diff

说明: 查看容器内发生改变的文件
语法:docker diff CONTAINER
示例:docker diff my_container


export

说明: 将容器打包,导出为tar文件格式
语法:docker export [OPTIONS] CONTAINER
示例:

# 将id为a404c6c174a2的容器按日期保存为tar文件。
docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2 

history

说明: 显示镜像的创建过程
语法:docker history [OPTIONS] IMAGE
示例:docker history runoob/ubuntu:v3


import

说明: 导入一个类型为tar的文件镜像
语法:docker images [OPTIONS] [REPOSITORY[:TAG]]
示例:

# 从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4 
docker import my_ubuntu_v3.tar runoob/ubuntu:v4 

info

说明: 显示docker的系统信息
语法:docker images [OPTIONS] [REPOSITORY[:TAG]]
示例:docker info


inspect

说明: 用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。
语法:docker inspect [OPTIONS] CONTAINER|IMAGE|TASK [CONTAINER|IMAGE|TASK...]
示例:docker inspect mysql:5.6


load

说明: 将打包的镜像导入。
语法:docker load [OPTIONS]
示例:docker load < busybox.tar


save

说明: 将指定镜像保存成 tar 归档文件。
语法:docker save [OPTIONS] IMAGE [IMAGE...]
示例:docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3


ps

说明: 列出所有容器,默认只列出当前正在运行的容器,-a参数可以查看所有状态的容器。
语法:docker ps [OPTIONS]
示例:

# 列出所有在运行的容器信息。
docker ps
# 最近创建的前10个容器
docker ps -n 10
# 列出所有创建的容器ID。
docker ps -a -q


kill

说明: 强制终止容器。
语法:docker kill [OPTIONS] CONTAINER [CONTAINER...]
示例:docker kill -s KILL mynginx


top

说明: 查看容器中运行的进程信息,支持 ps命令参数。
语法:docker top CONTAINER [ps OPTIONS]
示例:

# 查看容器mynginx的进程信息。
docker top mynginx
# 查看所有运行容器的进程信息。
for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done


pull

说明: 从仓库中下载一个镜像,默认为docker hub上。
语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
示例:docker pull python:3.6


push

说明: 上传镜像到仓库,默认为docker hub上,需要用户名和密码提前登录。
语法:docker push [OPTIONS] NAME[:TAG]
示例:docker push myapache:v1

你可能感兴趣的:(docker常用命令汇总)