docker笔记

本文详细介绍如何使用Docker封装基础镜像、实现负载均衡,并通过Docker Swarm进行容器高可用部署。从基本命令到复杂场景应用,包括Apache、Nginx、HAProxy的服务配置及Swarm集群管理。

封装基础镜像
docker run –name v1 -it rhel7 bash
cd /etc/yum.repos.d/
vim yum .repo
[yum]
name=rhel7.3
baseurl=http://172.25.10.250/rhel7.3
gpgcheck=0
rm -fr redhat.repo

ctrl p + q

rpmdb –rebuilddb


docker rm docker ps -aq

docker run -it –name vm1 ubuntu bash

ip addr del 172.17.0.2/16 dev eth0 ##拒绝

docker stop vm1
docker rm vm1

docker run -it –privileged=true –name vm1 ubuntu bash
ip addr del 172.17.0.2/16 dev eth0 ##ok

docker stop vm1
docker rm vm1

docker run -it –cap-add=NET_ADMIN –name vm1 ubuntu
bash
[root@foundation0 ~]# docker inspect -f {{.HostConfig.Privileged}} vm1
false
[root@foundation0 ~]# docker inspect -f {{.HostConfig.CapAdd}} vm1


#
compose负载均衡
#

[root@docker ~]# mv docker-compose-Linux-x86_64-1.16.1 /usr/local/sbin/
[root@docker ~]# cd /usr/local/sbin/
[root@docker sbin]# ln -s docker-compose-Linux-x86_64-1.16.1 docker-compose
[root@docker sbin]# chmod +x docker-compose

[root@docker ~]# mkdir compose
[root@docker ~]# cd compose/
[root@docker compose]# vim docker-compose.yml

apache:
build: ./web
expose:
- 80
nginx:
image: nginx
expose:
- 80
haproxy:
image: haproxy
volumes:
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
links:
- apache
- nginx
ports:
- “80:80”
expose:
- “80”
~
~
[root@docker compose]# mkdir web
[root@docker compose]# cd web
[root@docker web]# pwd
/root/compose/web
[root@docker web]# vim Dockerfile
FROM rhel7:v1
MAINTAINER 1904168391@qq.com
ENV HOSTNAME apache
EXPOSE 80
RUN yum -y install httpd
COPY index.html /var/www/html/index.html
CMD [“/usr/sbin/httpd”,”-D”,”FOREGROUND”]

[root@docker web]# echo “hello,world” >index.html
[root@docker web]# ls
Dockerfile index.html
[root@docker web]# pwd
/root/compose/web

[root@docker web]# cd ..
[root@docker compose]# pwd
/root/compose
[root@docker compose]# mkdir haproxy
[root@docker compose]# cd haproxy/
[root@docker haproxy]# vim haproxy.cfg

global
log 127.0.0.1 local0
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
stats uri /status
frontend balancer
bind 0.0.0.0:80
default_backend web_backends
backend web_backends
balance roundrobin
server web1 apache:80 check
server web2 nginx:80 check

[root@docker haproxy]# cd ..
[root@docker compose]# ls
docker-compose.yml haproxy web

[root@docker compose]# docker-compose up

[root@docker compose]# docker-compose start

docker swarn

准备两台7.3docker 开启,时间同步 docker3,docker4
load nginx镜像

#

swarm docker 容器高可用

#

[root@docker compose]# docker swarm init

[root@docker3 ~]# docker swarm join –token SWMTKN-1-18rdmlwd9lka6s0az8wb5qa3lgq28umk4e7a0pf9jsm7s2exgh-3zmxi77ywpp4zi5vrmibgeoev 172.25.10.1:2377

[root@docker4 ~]# docker swarm join –token SWMTKN-1-18rdmlwd9lka6s0az8wb5qa3lgq28umk4e7a0pf9jsm7s2exgh-3zmxi77ywpp4zi5vrmibgeoev 172.25.10.1:2377

[root@docker compose]# docker service create –name web –publish 80:80 –replicas 4 nginx

[root@docker ~]# docker service ps web

[root@docker ~]# docker service scale web=num

浏览器:172.25.10.1


[root@docker ~]# docker load -i visualizer.tar
[root@docker ~]# docker service create –name=viz –publish=8080:8080/tcp –constraint=node.role==manager –mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer

[root@docker ~]# docker service scale web=30

浏览器:172.25.10.1:8080


更新httpd
封装一个apache
vim Dockerfile
FROM rhel7:v1
MAINTAINER 1904168391@qq.com
ENV HOSTNAME apache
EXPOSE 80
RUN yum -y install httpd
CMD [“/usr/sbin/httpd”,”-D”,”FOREGROUND”]

docker build -t rhel7:v2 .
docker save rhel7:v2 >rhel7.tar
scp rhel7.tar root@172.25.10.3:~
scp rhel7.tar root@172.25.10.4:~

docker service update –update-parallelism 2 –update-delay 2s –update-failure-action rollback –image rhel7:v2 web

l

[root@docker ~]# docker load -i flask.tar
[root@docker ~]# vim test.py
from flask import Flask

    import os

    app = Flask(__name__)

    @app.route("/")

    def env():
       return os.environ["HOSTNAME"]

    app.run(host="0.0.0.0")

[root@docker ~]# docker run -d –name test -v /root/test.py:/test.py python:flask python /test.py

[root@docker ~]# curl 172.17.0.2:5000
9fe8a921b493

[root@docker ~]# docker stop test
test

[root@docker ~]# docker rm test
test

[root@docker ~]# docker run -it –name test python:flask
Python 2.7.11 (default, Mar 24 2016, 09:47:20)
[GCC 4.9.2] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.

ctrl q p

[root@docker ~]# docker container cp test.py test:/
[root@docker ~]# docker container exec test ls /
test.py

[root@docker ~]# docker container commit test python:demo
[root@docker ~]# docker images

[root@docker ~]# docker save python:demo > demo.tar 保存
[root@docker ~]# scp demo.tar root@172.25.10.3:~
[root@docker ~]# scp demo.tar root@172.25.10.4:~

[root@docker3 ~]# docker load -i demo.tar

[root@docker4 ~]# docker load -i demo.tar

[root@docker ~]# docker service create –replicas 3 –publish 80:5000 python:demo python /test.py

[kiosk@foundation10 Desktop]$ for i in {1..20}; do curl -w “\n” 172.25.10.1; done

e06209491de1
06ba47135b5e
c52d01f68b20

e06209491de1
06ba47135b5e
c52d01f68b20

e06209491de1
06ba47135b5e
c52d01f68b20

e06209491de1
06ba47135b5e
c52d01f68b20
e06209491de1
06ba47135b5e
c52d01f68b20
e06209491de1
06ba47135b5e
c52d01f68b20
e06209491de1
06ba47135b5e

[root@docker ~]# docker service scale affectionate_swirles=10 ##忘了命名了


[root@docker ~]# docker service rm affectionate_swirles
[root@docker ~]# docker service create –name web -p 80:80 –replicas 3 nginx
[kiosk@foundation10 Desktop]$ curl 172.25.10.1
nginx默认页

[root@docker ~]# docker service update –mount-add type=bind,source=/root/web,target=/usr/share/nginx/html web
www

在docker,家目录下新建web
web 里边index.html –hello

docker3家目录下新建web
web 里边index.html –hello hello

docker4家目录下新建web
web 里边index.html –hello hello hello

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值