1 查看运行容器
Docker ps
2 查看所有容器
Docker ps –a
3 进入容器
其中字符串为容器ID
Docker exec –it dddd22222kkkk /bin/bash
4停用全部运行中的容器
Docker stop $(docker ps -q)
5 删除全部容器
Docker rm $(docker ps -aq)
6 1条命令停用并删除容器
Docker stop $(docker ps -q) & docker rm $(docker ps -aq)
7 查看当前有什么images
Docker images
8 删除images,通过images的id来指定删除谁
Docker rmi <image id>
9 想要删除untagged images
Docker rmi $(docker images | grep “^<none>”|awk “{print $3}”)
10 删除全部image
Docker rmi $(docker images -q)
11 强制删除全部images的话
Docker rmi –f $(docker images -q)
13 如何查看docker的日志
docker logs -f -t --since="2018-05-31" --tail=10 edu_web_1
--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
-f : 查看实时日志
-t : 查看日志产生的日期
-tail=10 : 查看最后的10条日志。
edu_web_1 : 容器名称
14查看日志:
docker logs -f dockername
15 docker stack命令
根据compose文件创建stack
Docker stack deploy – compose-file docker-compose.yml app
列出所有stack
Docker stack ls
列出 stack中的所有任务
Docker stack ps
删除stack
Docker stack rm
列出stack 中所有服务
Docker stack services stack-name
16.Docker swarm学习命令:
(1)初始化swarm manager并绑定网卡地址
Docker swarm init –advertise-addr 192.168.10.11
(2)强制删除集群,如果是manager,则需要加—force
Docker swarm leave –force
Docker node rm docker-119
(3)查看swarm worker的连接令牌
Docker swarm join-token worker
(4)查看swarm manager的连接令牌
Docker swarm join-token manager
(5)使旧令牌无效并生成新令牌
Docker swarm join-token –rotate
(6)加入docker swarm集群
docker swarm join --token SWMTKN-1-2nwj6pn7ajv1rgc7ekfuqv8wszp2vl4oln3z0v2c8lflopp3bs-bdh86evt9mnacsv2e3tn9sekh 192.168.10.146:2377
(7)查看集群中的节点
Docker node ls
正确的删除姿势就是node demote -> node rm
docker node rm
docker node demote
(8)查看集群中节点信息
Docker node inspect docker-119 –pretty
(9)调度程序可以将任务分配给节点
Docker node update –availability active docker-118
(10)调度程序不向节点分配新任务,但是现有任务仍然保持运行
Docker node update –availability pause docker-118
(11)调度程序不会向新任务分配节点。调度程序关闭任何现有任务并在可用节点上安排他们
Docker node update –availability drain docker-118
(12)添加节点标签:
Docker node update --label-add label1 --label-add bar=label2 docker-117
(13)删除节点标签
Docker node update –label-rm label1 docker-117
(14)将节点升级为:manager
Docker node promote docker-119
(15)将节点降级为worker
Docker node demote docker-118
(16)查看服务列表
Docker service ls
(17) 查看服务的具体信息
Docker service ps redis
(18)创建一个不定义name,不定义replicas的服务
Docker service create nginx
(19) 创建一个指定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
查看服务日志:
docker service logs
命令用于获取服务的日志。docker服务记录命令批量检索执行时存在的日志。
注意:此命令仅适用于使用
json-file
或日志记录驱动程序启动的服务。
用法
docker service logs [OPTIONS] SERVICE
Shell
选项
名称,简写 | 默认 | 说明 |
---|---|---|
--details | false | 显示额外的详细信息到日志中 |
--follow, -f | false | 按照日志输出 |
--no-resolve | false | 不要将ID映射到名称 |
--since | 从某个时间戳起显示日志 | |
--tail | all | 从日志结尾的指定行数开始显示 |
--timestamps, -t | false | 显示时间戳 |
查看 容器日志:
docker logs -f -t --since="20187-7-30" --tail=10 docker_container_name
--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
-f : 查看实时日志
-t : 查看日志产生的日期
-tail=10 : 查看最后的10条日志。
docker_container_name : 容器名称
docker service
创建一个 Docker service
$ docker service create --replicas 1 --name myhelloworld alpine ping docker.com
--replicas
: 标识运行实例个数
--name
: service 的名称
alpine ping docker.com: 运行参数,表明service将运行一个Alpine Linux container,并且执行
ping docker.com
的命令。
审视 Docker service
$ docker service inspect --pretty myhelloworld
--pretty: 指定返回为简约格式,否则,讲义JSON格式返回
查看 service 上运行 node 的情况
$ docker service ps myhelloworld
查看容器详细信息
$ docker ps
修改service 规模
$ docker service scale myhelloworld=5
删除 service
$ docker service rm myhelloworld
轮询更新
$ docker service create \
--replicas 3 \
--name redis \
--update-delay 10s \
redis:3.0.6
查看 service 状态
$ docker service inspect --pretty myredis
更新 service
更新节点
$ #docker service update --image redis:3.0.6 myredis
指定service的某个节点排满状态
$ docker node update --availability drain worker1
此后,将不会再在worker1 上面分派任务。