将容器保存为镜像
1 | docker commit 容器名 复制镜像名 可加参数-a=“作者名” |
将镜像打包成文件
1 | docker save -o 文件名.tar 镜像名 |
查询Images镜像latest版本号
1 | docker image inspect (docker image名称):latest|grep -i version |
将文件导入镜像
1 | docker load -i 文件名.tar |
将容器导出为文件
1 | docker export 容量名 > 文件名 |
创建自定义网络
docker network create –subnet=[自定义网络广播地址]/[子网掩码位数] [自定义网络名]
1 | docker network create --subnet=192.168.11.0/24 testnet |
删除自定义网络
1 | docker network rm testnet |
固定容器IP地址
docker run -it –name [容器名] –net [网络名] –ip [选定网络下固定 IP 地址] ubuntu:latest /bin/bash
1 | docker run -it --rm --name=test --net=testnet --ip=192.168.11.99 alpine /bin/sh |
使用容器网络
1 | docker run -it --rm --name=lhwl --net=container:容器ID |
更新docker参数
1 | docker update --restart=always 容器ID |
停止容器时自动删除掉容器
1 | docker run -it --rm --name test 容器ID |
控制容器的CPU优先级 (每个容器默认值为1024)
1 | docker run -it --cpu-shares 512 -name test 容器ID |
绑定指定CPU到容器(绑定CPU0和1两核)
1 | docker run -it --cpuset-cpus 0-1 centos |
控制容器使用的内存容量
1 | docker run -it -m 128m centos |
控制容器写入速度
1 | docker run -it -name test --device /dev/sda:/dev/sda --device-write-bps /dev/sda:1mb centos |
容器变量时区设置
1 | docker run -e TZ="Asia/Shanghai" #运行时添加上TZ选项 |
容器重命名
1 | docker rename name1 name2 |
指定容器主机名(-h)
1 | docker run -it --name=test -h=test centos |
清理所有无用镜像
1 | docker image prune -a |
清理所有无用数据卷
1 | docker volume prune |
清理所有停止的容器
1 | docker container prune |
Docker ps
1 | docker ps -a :会列出当前服务器中所有的容器,无论是否在运行。 |
批量导入镜像
1 | ll *.tar|awk '{print $NF}'|sed -r 's#(.*)#docker load -i \1#' |bash |
Docker创建时自动建好MYSQL仓库
1 | FROM mysql:5.7 |
Dockerfile
1 | FROM centos:8 基础镜像 |
Docker Swarm
初始化swarm manager并制定网卡地址
1 | docker swarm init --advertise-addr 182.48.115.237 |
查看swarm worker的连接令牌
1 | docker swarm join-token worker |
查看swarm manager的连接令牌
1 | docker swarm join-token manager |
加入docker swarm集群,作为worker节点
1 | docker swarm join --token SWMTKN-1-4roc8fx10cyfgj1w1td8m0pkyim08mve578wvl03eqcg5ll3ig-f0apd81qfdwv27rnx4a4y9jej 182.48.115.237:2377 |
使旧令牌无效并生成新令牌
1 | docker swarm join-token --rotate |
查看集群中的节点
1 | docker node ls |
查看集群中节点信息
1 | docker node inspect swarm-node1 --pretty |
调度程序可以将任务分配给节点
1 | docker node update --availability active swarm-node1 |
调度程序不向节点分配新任务,但是现有任务仍然保持运行
1 | docker node update --availability pause swarm-node1 |
调度程序不会将新任务分配给节点。调度程序关闭任何现有任务并在可用节点上安排它们. 也就是线下节点,不参与任务分配.
1 | docker node update --availability drain swarm-node1 |
添加节点标签
1 | docker node update --label-add label1 --label-add bar=label2 swarm-node1 |
删除节点标签
1 | docker node update --label-rm label1 swarm-node1 |
将worker节点升级为manager节点
1 | docker node promote swarm-node1 |
将manager节点降级为worker节点
1 | docker node demote swarm-manager-node |
查看服务列表
1 | docker service ls |
查看服务的具体信息
1 | docker service ps my-test |
创建一个不定义name,不定义replicas的服务. (如下的nginx是docker的nginx镜像名称,不是服务名称)
1 | docker service create nginx |
创建一个指定name的服务
1 | docker service create --name my-nginx nginx |
创建一个指定name、run cmd的服务
1 | docker service create --name my-nginx nginx ping www.baidu.com |
使用yaml文件创建test容器
1 | docker stack deploy -c deploy.yml test |
重启docker集群
1 | docker service scale srment_nacos=0 && docker service scale srment_nacos=1 |
创建一个指定name、version、run cmd的服务
1 | docker service create --name my-redis redis:3.0.6 |
创建一个指定name、port、replicas的服务
1 | docker service create --name my-nginx --replicas 3 -p 80:80 nginx |
为指定的服务更新一个端口
1 | docker service update --publish-add 80:80 my-nginx |
为指定的服务删除一个端口
1 | docker service update --publish-rm 80:80 my-nginx |
将redis:3.0.6更新至redis:3.0.7
1 | docker service update --image redis:3.0.7 redis |
配置运行环境,指定工作目录及环境变量
1 | docker service create --name my-nginx --env MYVAR=myvalue --workdir /data/www --user my_user nginx ping www.baidu.com |
创建一个my-nginx的服务
1 | docker service create --name my-nginx nginx ping www.baidu.com |
更新my-nginx服务的运行命令
1 | docker service update --args "ping www.baidu.com" my-nginx |
删除一个服务
1 | docker service rm my-nginx |
在每个群组节点上运行web服务
1 | docker service create --name tomcat --mode global --publish mode=host,target=8080,published=8080 tomcat:latest |
创建一个overlay网络
1 | docker network create --driver overlay my-network |
创建服务并将网络添加至该服务
1 | docker service create --name my-test --replicas 3 --network my-network redis |
删除群组网络
1 | docker service update --network-rm my-network my-test |
更新群组网络
1 | docker service update --network-add haha-network my-test |
创建群组并配置cpu和内存
1 | docker service create --name my_nginx --reserve-cpu 2 --reserve-memory 512m --replicas 3 nginx |
更改所分配的cpu和内存
1 | docker service update --reserve-cpu 1 --reserve-memory 256m my_nginx |
创建服务时自定义的几个参数
- 指定每次更新的容器数量
--update-parallelism
- 指定容器更新的间隔
--update-delay
- 定义容器启动后监控失败的持续时间
--update-monitor
- 定义容器失败的百分比
--update-max-failure-ratio
- 定义容器启动失败之后所执行的动作
例: 比如:创建一个服务并运行3个副本,同步延迟10秒,10%任务失败则暂停
1 | 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 |
回滚至之前版本
1 | docker service update --rollback mysql |
创建服务并将目录挂在至container中
1 | 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 |
添加swarm配置
1 | echo "this is a mysql config" | docker config create mysql - |
查看配置
1 | docker config ls |
查看配置详细信息
1 | docker config inspect mysql |
删除配置
1 | docker config rm mysql |
添加配置
1 | docker service update --config-add mysql mysql |
删除配置
1 | docker service update --config-rm mysql mysql |
添加配置
1 | docker config create kevinpage index.html |
启动容器的同时添加配置
1 | docker service create --name nginx --publish 80:80 --replicas 3 --config src=kevinpage,target=/usr/share/nginx/html/index.html nginx |