Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)
文章目錄
- Docker Compose搭建consul群集環境
- 認識Docker Compose
- IConsul
- Docker Compose容器編排
- Dasker Compose配置常用字段
- Bosker Compose常用命令
- Compose命令說明
- Docker四種網絡模式
- 案例概述
- 指定Docker地址
- 部署compose群集
Docker Compose搭建consul群集環境
認識Docker Compose
- Docker Compose的前身是Fig,
它是一個定義及運行多個Docker
容器的工具 - 使用Docker Compose不再需要
使用Shell腳本來啟動容器 - Docker Compose非常適合組合
使用多個容器進行開發的場景
IConsul
- IConsul是HashiCorp公司推出的開源工具,用于實現分布
式系統的服務發現與配置 - Consul的特性
Hashitorp
●支持健康檢查,允許存儲鍵值對
●基于Golong語言,可移植性強
●支持ACL訪問控制 - 與Docker等輕量級容器可無縫配合
Docker Compose容器編排
YAML是一種標記語言很直觀的數據序列化格式
文件格式及編寫注意事項
- 不支持制表符tab鍵縮進,需要使用空格縮進
- 通常開頭縮進2個空格
- 字符后縮進1個空格,如冒號、逗號、橫桿
- 用#號注釋
- 如果包含特殊字符用單引號引起來
- 布爾值必須用引號括起來
Dasker Compose配置常用字段
| build dockerfile context | 指定Dockerfile文件名構建鏡像上下文路徑 |
| image | 指定鏡像 |
| command | 執行命令,覆蓋默認命令 |
| container name | 指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無法scale |
| deploy | 指定部署和運行服務相關配置,只能在Swarm模式使用 |
| environment | 添加環境變量 |
| networks | 加入網絡 |
| ports | 暴露容器端口,與-p相同,但端口不能低于60 |
| volumes | 掛載宿主機路徑或命令卷 |
| restart | 重啟策略,默認no,always,no-failure,unless-stoped |
| hostname | 容器主機名 |
Bosker Compose常用命令
| build | 重新構建服務 |
| ps | 列出容器 |
| up | 創建和啟動容器 |
| exec | 在容器里面執行命令 |
| scale | 指定一個服務容器啟動數量 |
| top | 顯示容器進程 |
| logs | 查看容器輸出 |
| down | 刪除容器、網絡、數據卷和鏡像 |
| stop/start/restart | 停止/啟動/重啟服務 |
Compose命令說明
基本的使用格式
docker-compose [options][COMMAND][ARGS...]docker-compose選項
- –verbose輸出更多調試信息
- –version打印版本并退出
- -f,–file FILE使用特定的compose模板文件,默認為docker-compose.yml
- -p,–project-name NAME指定項目名稱,默認使用目錄
名稱
Docker四種網絡模式
host:容器將不會虛擬出自己的網卡,配置自己的IP等,而是使用宿主機的IP和端口.
Container:創建的容器不會創建自己的網卡,配置自己的IP,而是和一個指定的容器共享IP、端口范圍。
None:該模式關閉了容器的網絡功能。
Bridge:此模式會為每一個容器分配、設置IP等,并將容器連接到一個dockero虛擬網橋,通過dockero網橋以及lptables nat表配置與宿主機通信。
**
案例概述
創鑫公司提出一個新需求,使用Docker將Consul、
Consul Template、Registrator和Nginx組裝成一個
值得信任且可擴展的服務框架,可在這個框架中添加和
移除服務,不需要重寫任何配置,也不需要重啟任何服
務,一切都能正常運行
指定Docker地址
橋接
docker run -itd --name test --network bridge --ip 172.17.0.10 centos:7 /bin/bash [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 75c0f431ea72 centos:7 "/bin/bash" 10 seconds ago Created test使用brige無法支持指定ip
使用brige無法支持指定ip
我們用一下方法
方法一
[root@localhost ~]# docker network create --subnet=172.18.0.0/24 mynetworkifconfig查看
br-f1c03a82b4dd: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.18.0.1 netmask 255.255.255.0 broadcast 172.18.0.255方法二
[root@localhost ~]# docker run -itd --name test --net mynetwork --ip 172.18.0.10 centos:7 /bin/bash 查看時up狀態 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 042913086b1e centos:7 "/bin/bash" 37 seconds ago Up 35 seconds進入docker容器
[root@localhost ~]# docker exec -it 042913086b1e /bin/bash下載一下ifcong
[root@042913086b1e /]# yum -y install net-tools可以看到已經創建ip(和我們配置的地址一樣)
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.18.0.10 netmask 255.255.255.0 broadcast 172.18.0.255部署compose群集
導入docker-compose 模板文件
[root@localhost ~]# chmod +x docker-compose [root@localhost ~]# cp -p docker-compose /usr/local/bin/ 創建編排nginx服務創建編排nginx服務
[root@localhost ~]# mkdir compose_nginx [root@localhost ~]# cd compose_nginx/ [root@localhost compose_nginx]# mkdir nginx [root@localhost compose_nginx]# cd nginx/ [root@localhost nginx]# vim Dockerfile FROM centos:7 MAINTAINER this is nginx RUN yum -y update RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make RUN useradd -M -s /sbin/nologin nginx ADD nginx-1.12.0.tar.gz /usr/local/src WORKDIR /usr/local/src WORKDIR nginx-1.12.0 RUN ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module && make && make install ENV PATH /usr/local/nginx/sbin:$PATH EXPOSE 80 EXPOSE 443 RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf ADD run.sh /run.sh RUN chmod 755 /run.sh CMD ["/run.sh"]創建啟動腳本
[root@localhost nginx]# vim run.sh #!/bin/bash /usr/local/nginx/sbin/nginx配置yml
cd /root/compose_nginx/ [root@localhost compose_nginx]# vim docker-compose.yml version: '3' services: nginx: hostname: nginxbuild: context: ./nginxdockerfile: Dockerfileports: - 1216:80- 1217:443networks: - yunvolumes: - ./wwwroot:/usr/local/nginx/html networks: yun:開啟服務
[root@localhost compose_nginx]# docker-compose -f docker-compose.yml up -d編寫網頁
[root@localhost compose_nginx]# cd wwwroot/ [root@localhost wwwroot]# vim index.html <h1>this is test web </h1>樹形結構查看
[root@localhost wwwroot]# yum install -y tree[root@localhost compose_nginx]# tree ./ ./ ├── docker-compose.yml ├── nginx │ ├── Dockerfile │ ├── nginx-1.12.0.tar.gz │ └── run.sh └── wwwroot└── index.html查看端口
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES acd31d303623 compose_nginx_nginx "/run.sh" 2 minutes ago Up 2 minutes 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1總結
以上是生活随笔為你收集整理的Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD CPU新时代:DDR4内存兼容性
- 下一篇: x99内存性能揭秘:游戏加载速度惊人提升