赞
踩
1、commit #通过容器创建本地镜像
语法: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
实例:把本地镜像制作成镜像
[root@localhost ~]# docker commit -a "song" -m "test" gaice gaice:v5
sha256:b2e8afbca277f247398d536890636d23894f5d02d09af2acd99c1c5c6ec04cc6
2、cp #在宿主机和容器之间相互拷贝文件
语法: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
实例:将容器中的/usr/local/apache-tomcat-8.5.23/1 拷贝到本地
[root@localhost ~]#docker cp gaice:/usr/local/apache-tomcat-8.5.23/1 /root/
修改完毕后,将该文件重新copy回容器
[root@localhost ~]# docker cp /root/1 gaice:/usr/local/apache-tomcat-8.5.23/
3、diff #查看容器内发生改变的文件
语法: docker diff CONTAINER
实例:查看容器mymysql的文件结构更改。[root@localhost ~]# docker diff gaice
C /root
A /root/.ash_history
C /tmp
C /tmp/hsperfdata_root
A /tmp/hsperfdata_root/1
C /usr
C /usr/bin
A /usr/bin/vim
C /usr/local
C /usr/local/apache-tomcat-8.5.23
C /usr/local/apache-tomcat-8.5.23/logs
A /usr/local/apache-tomcat-8.5.23/logs/localhost.2021-12-23.log
A /usr/local/apache-tomcat-8.5.23/logs/localhost.2021-12-28.log
1、run #启动一个容器,等同于docker create && docker start命令
语法:Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[ ]: 添加链接到另一个容器;
--expose=[ ]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
实例:使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
[root@localhost ~]# docker run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
[root@localhost ~]#docker run -P -d nginx:latest使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data。
[root@localhost ~]#docker run -p 80:80 -v /data:/data -d nginx:latest --name=nginxdocker inspect nginx查看是否mounts挂载是否成功
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
[root@localhost ~]# docker run -it nginx:latest /bin/bash
root@b8573233d675:/#
2、start/stop/restart #启动、停止、重启一个容器
语法:docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
实例:启动已被停止的容器tomcat
[root@localhost ~]#docker start tomcat
停止运行中的容器tomcat
[root@localhost ~]#docker stop tomcat
重启容器tomcat
[root@localhost ~]#docker restart tomcat
3、kill #强制终止容器
语法:Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...]
-s :向容器发送一个信号
实例:杀掉运行中的容器tomcat
[root@localhost ~]# docker kill -s KILL tomcattomcat
4、docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。
语法
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]
实例
暂停数据库容器mysql;提供服务。
docker pause mysql
恢复数据库容器 mysql提供服务。
docker unpause mysql
5、create #仅创建一个容器
语法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
实例:使用docker镜像nginx:latest创建一个容器,并将容器命名为mysql
[root@localhost ~]# docker create --name mysql mysql:latest
338c6bd5be37a58fb42003e06da6ba2b0b3c160dcf7e7090e9488a6ea0e87dc1
6、exec #进入容器
语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
[root@localhost ~]# docker exec -it gaice /bin/sh
7、rm #删除一个或多个容器,默认只能删除非运行状态的容器,-f参数可以强制删除
语法: docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷。
实例:强制删除容器db01、db02
[root@localhost ~]# docker rm -f db01、db02
移除容器nginx01对容器db01的连接,连接名db
[root@localhost ~]# docker rm -l db
删除容器nginx01,并删除容器挂载的数据卷
[root@localhost ~]# docker rm -v nginx01docker rm -f ($docker ps -aq)删除全部容器
1、ps #列出所有容器,默认只列出当前正在运行的容器,
-a参数可以查看所有状态的容器
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
语法:Usage: docker ps [OPTIONS]
实例:列出所有在运行的容器信息。
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
338c6bd5be37 mysql:latest "docker-entrypoint.s…" 6 hours ago Created mysql列出所有创建的容器ID。
[root@localhost ~]# docker ps -a -q
09b93464c2f7
b8573233d675
2、inspect #用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。
语法: docker inspect [OPTIONS] CONTAINER|IMAGE|TASK
-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
实例:获取容器mysql的信息。[root@localhost ~]# docker inspect mysql
[
{
"Id": "338c6bd5be37a58fb42003e06da6ba2b0b3c160dcf7e7090e9488a6ea0e87dc1",
"Created": "2021-12-28T03:14:59.618382622Z",
"Path": "docker-entrypoint.sh",
"Args": [
"mysqld"
],
"State": {
"Status": "created",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 0,
"Error": "",
"StartedAt": "0001-01-01T00:00:00Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:bbf6571db4977fe13c3f4e6289c1409fc6f98c2899eabad39bfe07cad8f64f67",
3、top #查看容器中运行的进程信息,支持 ps 命令参数
语法: docker top CONTAINER [ps OPTIONS]
实例:查看容器mymysql的进程信息。
[root@localhost ~]# docker top mymysql
UID PID PPID C STIME TTY TIME CMD
999 40347 40331 18 00:58 ? 00:00:02 mysqld
查看所有运行容器的进程信息。
[root@localhost ~]#for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
4、attach #进入容器内部,推出后停止
语法:docker attach [OPTIONS] CONTAINER
ttach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器
实例:进入tomcat容器
[root@localhost ~]# docker attach --sig-proxy=false tomcat
[root@66d300a868cf /]#
5、events #实时输出docker服务器的事件,包括容器的创建、启动和关闭等
语法: docker events [OPTIONS]
-f :根据条件过滤事件;
--since :从指定的时间戳后显示所有事件;
--until :流水时间显示到指定的时间为止;
实例:显示docker2021-12-28后的所有事件。
如果指定的时间是到秒级的,需要将时间转成时间戳。如果时间为日期的话,可以直接使用,如--since="2021-12-28"。
使用date命令获取一个特定时间的linux时间戳
[root@localhost ~]# date --date=20211228 +%s
1640620800
[root@localhost ~]# docker events --since="1640620800"2021-12-28T17:24:01.605259486+08:00 container exec_start: /bin/sh -c mysql -h127.0.0.1 -P$DB_PORT -uroot -p$MYSQL_ROOT_PASSWORD -e 'SHOW DATABASES;' e5471702f4af20c7e8ba6b4fb900c922608bb55a9bb1e8e681a39c645add7d29 (com.docker.compose.config-hash=c383873b2ff43e023246df762c2cba8f25cd4d3dc7c869e7c996241fe55ceb3a, com.docker.compose.container-number=1, com.docker.compose.oneoff=False, com.docker.compose.project=jms, com.docker.compose.project.config_files=compose/docker-compose-init-db.yml,compose/docker-compose-mysql.yml,compose/docker-compose-redis.yml,compose/docker-compose-network.yml, com.docker.compose.project.working_dir=/opt/jumpserver-installer-v2.14.2/compose, com.docker.compose.service=mysql, com.docker.compose.version=1.29.2, execID=1e980d87c3d276fcbccf774c093cc222d5a4c3f81efafd82aeb04f7637881020, image=jumpserver/mysql:5, name=jms_mysql)
如果想要获取某一个镜像的事件需用用到-fdocker events -f "image"="mysql" --since="2021-12-28"
6、logs #用于查看容器的日志,它将输出到标准输出的数据作为日志输出到docker logs命令的终端上。常用于后台型容器
语法:Usage: docker logs [OPTIONS] CONTAINER
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
实例:跟踪查看容器tomcat的日志输出。
[root@localhost ~]# docker logs gaice
23-Dec-2021 03:23:14.636 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.5.23
23-Dec-2021 03:23:14.647 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Sep 28 2017 10:30:11 UTC
23-Dec-2021 03:23:14.647 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.5.23.0
23-Dec-2021 03:23:14.648 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
23-Dec-2021 03:23:14.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-862.el7.x86_64
23-Dec-2021 03:23:14.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
23-Dec-2021 03:23:14.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/lib/jvm/java-1.8-openjdk/jre
23-Dec-2021 03:23:14.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_131-b11
23-Dec-2021 03:23:14.655 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
23-Dec-2021 03:23:14.655 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/apache-tomcat-8.5.23查看容器mysql从2021年12月28日后的最新10条日志。
[root@localhost ~]# docker logs --since="2021-12-28" --tail=10 mysql
7、wait #捕捉容器停止时的退出码,执行此命令后,该命令会“hang”在当前终端,直到容器停止,此时,会打印出容器的退出码。
语法: docker wait CONTAINER [CONTAINER...]
[root@localhost ~]# docker wait gaice
8、export #将容器打包,导出为tar文件格式
语法:docker export [OPTIONS] CONTAINER
实例:将id为746300e14aa4的容器按日期保存为tar文件。
[root@localhost ~]#docker export -o mysql-`date +%Y%m%d`.tar 746300e14aa4
[root@localhost ~]#ls mysql-`date +%Y%m%d`.tar
mysql-20211228.tar
9、port #输出容器与宿主机端口映射的信息
语法: docker port CONTAINER [PRIVATE_PORT[/PROTO]]
实例:查看容器tomcat的端口映射情况。[root@localhost ~]# docker port gaice
8080/tcp -> 0.0.0.0:8085
8080/tcp -> :::8085
1、login #登录到docker 镜像仓库,默认为dockerhub
语法: docker login [OPTIONS] [SERVER]
docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
-u :登陆的用户名
-p :登陆的密码
实例:登陆到Docker Hub
[root@localhost ~]# docker login -u 用户名 -p 密码 [SERVER]
logout #退出登录
语法:Usage: docker logout [SERVER]
实例:退出docker hub
[root@localhost ~]# docker logout [SERVER]
2、 pull #从仓库中下载一个镜像,默认为docker hub上
语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-a :拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启
实例:
从Docker Hub下载java最新版镜像。
[root@localhost ~]# docker pull java
从Docker Hub下载REPOSITORY为java的所有镜像。
[root@localhost ~]# docker pull -a java
3、push #上传镜像到仓库,默认为docker hub上,私人仓库需要用户名和密码
语法:docker push [OPTIONS] NAME[:TAG]
--disable-content-trust :忽略镜像的校验,默认开启
上传本地镜像myapache:v1到镜像仓库中。
root@localhost ~]# docker push myapache:v1
4、search #在docker hub上搜索镜像
语法: docker search [OPTIONS] TERM
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-f <过滤条件>:列出收藏数不小于指定值的镜像。
实例:从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像
[root@localhost ~]# docker search -f stars=10 java镜像仓库参数说明
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
1、images #列出本地所有的镜像
语法: docker images [OPTIONS] [REPOSITORY[:TAG]]
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
实例:查看本地镜像列表。
[root@localhost ~]#docker images
2、rmi #删除一个或多个镜像
Usage: docker rmi [OPTIONS] [IMAGE...]
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
docker rmi -f ($docker images -aq)删除全部镜像
3、tag #标记本地镜像,将其归入某一个仓库
语法: docker tag IMAGE[:TAG] IMAGE[:TAG]
实例:将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。
[root@localhost ~]# docker tag ubuntu:15.10 runoob/ubuntu:v3
[root@localhost ~]# docker images runoob/ubuntu:v3
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob/ubuntu v3 4e3b13c8a266 3 months ago 136.3 MB
4、 build #命令用于使用 Dockerfile 创建镜像。后期细讲
语法:docker build [OPTIONS] PATH | URL | -
--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--squash :将 Dockerfile 中所有的操作压缩为一层。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式
5、history #显示镜像的创建过程
语法: Usage: docker history [OPTIONS] IMAGE
-H :以可读的格式打印镜像大小和日期,默认为true;
--no-trunc :显示完整的提交记录;
-q :仅列出提交记录ID。
实例: 查看镜像mysql的创建历史。
[root@localhost ~]# docker history mysql
6、save #将指定镜像保存成 tar 归档文件
语法: docker save [OPTIONS] IMAGE [IMAGE...]
实例:将镜像mysql生成mysql.tar文档
[root@localhost ~]# [root@localhost ~]# docker save -o mysql.tar mysql
[root@localhost ~]# ll mysql.tar
-rw-------. 1 root root 137346560 12月 27 11:52 mysql.tar
7、load #将打包的镜像导入
语法:Usage: docker load [OPTIONS]
--input , -i : 指定导入的文件,代替 STDIN。
--quiet , -q : 精简输出信息。
实例:导入一个打包好的的msyql镜像
[root@localhost ~]#docker load < mysql.tar
[root@localhost ~]#docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mysql latest deb8033b1c86 weeks ago 137 MB
8、import #把创建的容器归档导入成一个镜像,类型为tar文件
语法:Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
实例:从镜像归档文件gaice.tar创建镜像,命名为gaicev6
[root@localhost ~]# docker import gaice.tar.gz gaice:v6
export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。
save 和 load 导出的是一个镜像的快照, 镜像本身,
你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。
快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。
1、info #显示 Docker 系统信息,包括镜像和容器数。。
语法: docker info [OPTIONS]
2、ersion #显示docker的版本信息
语法: docker version [OPTIONS]
实例:显示本机docker 版本信息
[root@localhost ~]# docker version
1、network #管理docker网络
语法: docker network COMMAND
实例:用于动态的将容器添加进一个已有网络/将容器从网络中移除。
[root@localhost ~]#docker network connect/docker network disconnect
创建docker网卡
[root@localhost ~]#docker network create -d overlay --ip-range=192.168.2.0/24 --gateway=192.168.2.1 --subnet=192.168.2.0/24 multihost2
显示网卡
[root@localhost ~]#docker network ls
删除docker网卡
[root@localhost ~]#docker network rm
查看docker网卡的相关详细信息
[root@localhost ~]#docker network inspect
node Manage Docker Swarm nodes #管理docker swarm节点
语法:Usage: docker node COMMAND
pause Pause all processes within one or more containers #暂停容器中所有的进程。
语法:Usage: docker pause CONTAINER [CONTAINER...]
实例:暂停数据库容器db01提供服务。
[root@localhost ~]#docker pause db01
2、service #管理docker service。Docker Service是一种声明式的、可扩展的、负载均衡的应用。Docker Service是面向用户的应用
语法: docker service COMMAND
实例:创建一个拥有5个副本的Docker Service
[root@localhost ~]# docker service create --name myService -p 8080:8080 --replicas 5 an_image
3、stats #动态显示容器的资源消耗情况,包括:CPU、内存、网络I/O
语法: docker stats [OPTIONS] [CONTAINER...]
实例:显示ID为746300e14aa4的状态信息
[root@localhost ~]# docker stats 746300e14aa4CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
746300e14aa4 gaice 0.17% 104.5MiB / 3.685GiB 2.77% 648B / 0B 0B / 0B 48
4、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.36Bind带来的风险
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
5、update #动态的更新一个或多个容器的配置
语法: docker update CONTAINER [CONTAINER...]
实例:更新mysql容器CPU限制cpu-shares=512[root@localhost ~]# docker update --cpu-shares 512 mysql
mysql更新容器的memory
[root@localhost ~]# docker update --memory 512m --memory-swap -1 gaicegaice
更新容器restart策略
[root@localhost ~]#docker update --restart=on-failure:3 gaicegaice
6、volume #管理docker数据卷
语法: docker volume COMMAND
实例:启动一个mysql01容器,包含两个数据卷
[root@localhost ~]#docker run -d -it -v nginx:/etc/nginx/conf.d -p 81:80 --name=nginx01 nginx /bin/bash
创建App_Container容器,挂载mysql02容器中的数据卷
[root@localhost ~]# docker run -d -it -p 82:80 --name=nginx02 --volumes-from=nginx01 nginx /bin/bash
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。