Ubuntu下安装Docker+Haproxy

OS: ubuntu16.04[LTS]

1.sudo apt-get update
2.apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
3.apt-get install docker
4.apt-get install docker.io
5.service docker start
6.docker –version
7.修改docker代理方式上網,需建立配置檔:

/etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment=”HTTP_PROXY=http://[proxy-addr]:[proxy-port]/
“HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/

建完成後,需更新配置:

     systemctl daemon-reload

再重啟服務:

     systemctl restart docker

8.docker search centos
9.docker pull centos
10.docker挂载本地目录

  docker run -itd -v /tmp:/tmp --name=centos-ha ricky/centos-haproxy /bin/bash

编外:
docker可以支持把一个宿主机上的目录挂载到镜像里。

交互模式运行

  docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash

  docker run -it --name=centos01 -v /tmp:/tmp centos /bin/bash  

后台运行

  docker run -d -v /home/dock/Downloads:/usr/Downloads --name ubuntu1 ubuntu64

通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。
现在镜像内就可以共享宿主机里的文件了。

默认挂载的路径权限为读写。如果指定为只读可以用:ro

  docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu64 /bin/bash

2、docker数据卷容器
docker还提供了一种高级的用法。叫数据卷。

数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。

示例:

  docker run -v /home/dock/Downloads:/usr/Downloads --name dataVol ubuntu64 /bin/bash

创建一个普通的容器。用–name给他指定了一个名(不指定的话会生成一个随机的名子)。

再创建一个新的容器,来使用这个数据卷。

docker run -it --volumes-from dataVol ubuntu64 /bin/bash

–volumes-from用来指定要从哪个数据卷来挂载数据。


11.contain內運行:

 echo "proxy=http://[proxy ip]:[port]/" >> /etc/yum.conf   

在档案yum.conf后添加代理地址

 yum install haproxy   

安裝haproxy

12.容器外,HA1下拷貝haproxy.conf 到ubuntu下

  scp /etc/haproxy/haproxy.cfg 192.168.145.140:/tmp/haproxy.cfg

13.container內,拷貝haproxy.cfg 到/etc/haproxy/目錄下

14.執行

  systemctl start haproxy

# 提示出錯:Failed to get D-Bus connection: Operation not permitted
# 新建container添加/usr/sbin/init以及privileged参数

  docker run -it --privileged --name=centos-ha ricky/centos-haproxy /usr/sbin/init

# 在启动该container后,需要对其进行stop/start操作
这样运行起来的container就可以使用systemctl来启动服务了

15.生成新的image
ubuntu下,執行:

docker commit -m "Add haproxy" f5d0613f5e7b ricky/centos-haproxy

生成新的images,包含之前安裝的haproxy,增加yum.conf:proxy,cp haproxy.cfg /etc/haproxy/haproxy.cfg

  docker run -it --privileged --name=centos-ha ricky/centos-haproxy /usr/sbin/init

17.登入container

  docker exec -it haproxy-ha /bin/bash

18.執行

 systemctl start haproxy

19.執行docker inspect ,查看docker IP地址為:172.17.0.2
20.ubuntu窗口下打開瀏覽器,訪問http://172.17.0.2,顯示web1/web2畫面正常,haproxy運行正常。

----------------

修改container IP地址

1.创建自定义网络

 docker network create --subnet=172.18.0.0/16 shadownet

注:shadown为自定义网桥的名字,可自己任意取名。

如不再需要,移除自定義網絡:

 docker network rm shadownet

2.在你自定义的网段选取任意IP地址作为你要启动的container的静态IP地址

  docker run -itd --name=centos-ha --privileged -p 80:80 --net shadownet --ip 172.18.0.10 ricky/centos-haproxy /usr/sbin/init

以固定IP172.18.0.10運行container,並將host 的80端口映射到container 80端口。
container啟動後,

  docker stop centos-ha
  docker start centos-ha
  docker exec -it centos-ha /bin/bash

進入container後,

  systemctl start haproxy

進入ubuntu窗口,瀏覽器訪問http://172.18.0.10,web1/web2正常,
訪問ubuntu本機,http://192.168.145.140,web1/web2正常。

重新打包container為ricky/centos-ha-new


刪除yum.conf最後一行

sed -i '$d' yum.conf
systemctl enable haproxy

vim haproxy.cfg,將web改為HR1/HR2地址後
重新打包

docker commit -m "add hrm ok" 8a4fd6b7f672 ricky/centos-ha-hrm

關閉所有container后,执行以下:

  docker run -itd --name=centos-ha --privileged -p 80:80 --net shadownet --ip 172.18.0.10 ricky/centos-ha-hrm /usr/sbin/init

進入ubuntu窗口,實測HRM系統HA正常。
--------------

將image另存:

  docker save ricky/centos-ha-hrm > /home/ricky/docker/centos-ha-hrm-image.tar

-------------

1.新建ubuntu server
2.將centos-ha-hrm-image.tar copy至本機上/tmp目录
3.apt-get update
4.apt-get install docker.io
5.service docker start #運行docker
6.docker –version # 確認docker 安裝OK。
7.docker load < /home/ricky/docker/centos-ha-hrm-image.tar
8.docker network create –subnet=172.18.0.0/16 shadownet
9.docker run -itd –name=centos-ha –privileged -p 80:80 –net shadownet –ip 172.18.0.10 ricky/centos-ha-hrm /usr/sbin/init
实测HR1/HR2 HA正常

阅读更多
文章标签: ubuntu docker haproxy
个人分类: 运维
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭