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 16.04 终端安装Docker

12-14

更新APT的源,安装https和ca证书的库,默认这2个库都已经装了。rn[code=text]rnsudo apt-get updaternsudo apt-get install apt-transport-https ca-certificatesrn[/code]rnrn添加秘钥GPG到APT配置中。rn[code=text]rnsudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609Drn[/code]rnrn增加Docker的源到/etc/apt/souces.list文件中,我的版本是14.04对应ubuntu-trusty。rn[code=text]rnsudo vim /etc/apt/sources.listrn[/code]rn# 增加到最后一行rndeb https://apt.dockerproject.org/repo ubuntu-trusty mainrnrn接下来,就可以用可以用apt-get直接安装Docker了。rn[code=text]rnsudo apt-get updaternsudo apt-get install docker-enginern[/code]rn此时会遇到一个错误:rn[code=text]xdstar@ubuntu:/etc/apt$ sudo apt-get install docker-enginernReading package lists... DonernBuilding dependency treernReading state information... DonernSome packages could not be installed. This may mean that you havernrequested an impossible situation or if you are using the unstablerndistribution that some required packages have not yet been createdrnor been moved out of Incoming.rnThe following information may help to resolve the situation:rnrnThe following packages have unmet dependencies:rn docker-engine : Depends: libsystemd-journal0 (>= 201) but it is not installablern Recommends: aufs-tools but it is not going to be installedrn Recommends: cgroupfs-mount but it is not going to be installed orrn cgroup-lite but it is not going to be installedrnE: Unable to correct problems, you have held broken packages.rn[/code]rnrn解决办法:rn在source.list 中docker源之前加上rndeb http://cz.archive.ubuntu.com/ubuntu trusty mainrnrn然后 更新和安装rn[code=text]rnsudo apt-get updaternsudo apt-get install docker-enginern[/code]rnrnOK!!!rn

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

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试