MSA - Docker Swarm

1Docker

1.1start docker

yum install docker

docker -v //docker版本

docker info - high level

docker inspect - low level

systemctl start docker  //启动docker, systemctl=service+chkconfig

systemctl stop docker

systemctl restart docker

systemctl status docker

systemctl enable docker   //开机启动...


1.2docker命令

docker images    //列出本地镜像

docker search mysql   //搜索远程镜像

docker pull centos:7   //pull镜像

docker pull zookeeper

docker pull httpd

docker images -q    //所有的镜像id

docker push  //推送镜像

docker ps  //**正在运行的容器

docker ps -a  //全部容器

docker ps -l   //最新的容器

docker ps -f status=exited   //停止的容器,都小写

docker ps -f status=created

docker ps -n 5    //最新5个container

相对应的有:

docker node ps -f "label=usage"

docker service ps -f 'desired-state=running' dit_ui-homepage

docker service ps -q dit1_ui-homepage   //-q或--quiet //only display task(也叫service) IDs

docker service ps --quite dit1_ui-homepage


1.3运行容器

docker run     //创建并运行容器, -i表示运行容器;-t表示容器启动后会进入命令行;-d表示detached, 后台运行;-t和-d刚好相反

docker run -id --name=pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql    //如果没有相应镜像会自动下载 -e:环境变量...

docker run -id --name=mycentos3 -v /usr/local/myhtml:/usr/local/mh --privileged=true centos:7  //运行容器并顺带映射--宿主机目录:容器目录  //--privileged=true 容器获得宿主机的权限

-v   //在宿主机上修改,然后共享到容器上...

exit: 退出容器

docker run -it --name=mycentos centos:7 /bin/bash     //bin/bash是用来交互的,前台运行需要加上...   //即使关闭的容器也不能重名



1.4查看后台运行的容器

//查看必须是-it 且加上交互/bin/bash

docker exec -it mycentos3 /bin/bash   //或

docker exec -it mycentos3 /bash   //或

docker exec -it mycentos3 sh

docker inspect 容器名   //外面不能访问ip,只能通过端口映射来访问容器,因为容器ip在不同的网段...

容器的停止: 用run创建后的容器都可以启动和停止

docker stop 容器名   //不是docker的停止


1.5文件拷贝

docker cp testFile testCentos:/usr/local    //容器间的拷贝是不允许的... //echo 123 > testFile

//容器停止再启动,拷贝的文件还在那吗?还有,如果容器是以service的形式启动的呢?

可以重新启动...(容器不能重名,所以restart还是原来的容器,东西也不会丢失)

docker rm 容器名   //区别于docker rmi image名,如果image有容器在运行就没法删除...

1.6文件挂载(文件映射)

宿主机:容器

1.7将容器保存为镜像

这样配置好的容器就可以迁移...

docker commit...

将镜像保存为文件

docker save -o myfile.tar myimage

恢复

docker load -i myfile.tar

sudo docker system prune --volumes -af && sudo docker image prune -af


2Docker Swarm

Swarm: stack一组服务编排的使用;service一个应用的抽象;task一个容器;

2.1docker node

docker node ls                      //List nodes in the swarm 查看docker swarm中各个节点的状况;

hostname manager         //重命名

docker node inspect --pretty worker02

docker node ps self              //This command works with the Swarm

orchestrator  //List tasks running on one or more nodes, defaults to

current node

docker node ps -f "label=usage"

docker node update --help     //availability string       drain就是排除

docker node update --availability drain manager       //manager节点不跑service


2.2docker service

docker service --help   //查询所有相关命令

Docker service create --replicas 1 --name hello busybox ping google.com    //创建服务

Docker service create --replicas 1 --name hello 8080:80 busybox ping google.com      //创建服务并映射端口


docker service ls     //list services

docker service ps hello

docker service update --args 'ping www.google.com' hello     //更新现有service的配置...

docker service ps my_web                                                 //用docker ps -a 是能够看到这些容器的(只能查看到本节点的service)

docker service ps -f 'desired-state=running' service名               //查看service所在的节点

[online@master ~]$ docker service ps perf_service-sitesettings       //可以在manager上查看到service所在的节点

docker ps | grep 容器名: docker ps | grep cms


docker service inspect --pretty my_web   //清晰查看

把镜像从3.0.6更新到3.0.7(从创建时的镜像更新到新镜像...)

docker service update --publish-add 30094:4055 my_web    //更新服务

Docker service update --image nginx:1.12 nginx_test            //更新服务

Docker service scale my_web=2  //扩容,创建的时候用--replicas 1,扩容用scale

//other cases

Docker service create --replicas 1 --name uat_service-price xxxx:xx registry.online.xxx.com/ecomm/service.price:uat   //never tried this, better use yml file

docker service update --image registry.online.kungnect.com/ecomm/service.caas:uat uat_service-caas

docker service update --image registry.online.xxx.com/ecomm/service.localization:prod prod_service-localization //更新服务的一些相关配置...

//查看或删除特定的service

docker ps | grep service-name

docker service stop service-name   //错误,没有docker service stop, but you can try docker service rm

docker service rm 4orr7bof323w      //kill or remove service

docker service scale service-name=0 //跟portainer的scale相对应

docker service rm service-name  //跟portainer的remove相对应

docker service rm ...          //跟portainer里的操作一样的...

回滚策略:

[root@localhost ~]# docker service create \

> --name my_web4 \

> --replicas 10 \

> --update-delay 10s \

> --update-parallelism 2 \

> --update-failure-action continue \

> nginx

docker service update --rollback my_web4                 //手动回滚

2.3docker build

docker build -t 192.168.0.210:5000/nginx:v1 .     //192.168.0.210:5000是私有仓库

2.4docker push

2.5docker swarm init

2.6docker stack deploy

docker stack deploy -c app.yml.cms2 uat     //基于yml创建和更新服务,即docker service create & docker service update

python ./script/haproxy.py    //更新proxy文件

2.7dockerfile和yml文件的区别

2.7.1dockerfile用来创建镜像

Container 转成Image(不推荐),比如docker commit 容器名 镜像名

docker build的方式也就是通过Dockfile的方式(推荐),比如docker build -t 仓库/centos-vim-new .

2.7.2yml用来创建服务service

yml - 创建服务cms-a / cms-b / cms-c

service:nginx:image: 192.168.0.210:5000/nginx:v1

2.8docker container和docker swarm service

swarm service只能通过manager node控制和管理,docker container由docker daemon进行控制和管理

而且从实践看来,每个service都是一个container,比如:

在portainer停止一个service后,特别是replicas=1的service,你就能看到相应的container也停止了;

如果service的replicas=2, 肯定会有相应的2个container,从这个意思上讲,service和container的关系是1:n


3脚本

3.1

sh -c"while true;do curl 127.0.0.1:8080&&sleep 1;done"


4实战

[root@localhost ~]# ln -s /opt/apache-maven-3.5.3/ /opt/apache-maven

[root@localhost ~]# systemctl start docker

[root@localhost ~]# docker images


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容