目錄
一、compose的概述
1.1 yaml的概述
1.2 yaml的數(shù)據(jù)結(jié)構(gòu)
1.2.1 docker composeyml文件的常用手段
1.3?docker compose
1.4 yml文件編寫
?二、部署compose
2.1 下載docker-compose安裝包
?2.2 部署docker-compose
2.3 部署docker-compose
2.4 開啟驗證
?三、compose編排安裝tomcat容器
總結(jié)
一、compose的概述
compose是docker官網(wǎng)開發(fā)的,負(fù)責(zé)實現(xiàn)對docker容器集群的快速編排。
docker-compose是基于docker的編排工具,使容器的操作能夠批量的,可視的執(zhí)行,是一個管理多個容器的工具,比如可以解決容器之間的依賴關(guān)系,當(dāng)在宿主機啟動較多的容器時候,
如果都是手動操作會覺得比較麻煩而且容器出錯,這個時候推薦使用 dockerd的單機編排工具 docker-compose。
-
compose是一個用于定義及允許多個Docker容器的工具,主要是通過一個YAML文件進(jìn)行服務(wù)配置
-
使用Docker?Compose不再需要使用Shell腳本來啟動容器
-
Docker Compose非常適合組合使用多個容器進(jìn)行開發(fā)的場景
Compose有2個重要的概念:
- 項目(Project):由一組關(guān)聯(lián)的應(yīng)用容器組成的一個完整業(yè)務(wù)單元,在 docker-compose.yml 文件中定義。
- 服務(wù)(Service):一個應(yīng)用的容器,實際上可以包括若干運行相同鏡像的容器實例。
使用Compose 基本上分為三步:
1. Dockerfile? ? ? 定義應(yīng)用的運行環(huán)境
2. docker-compose.yml 定義組成應(yīng)用的各服務(wù)
3. docker-compose up 啟動整個應(yīng)用
1.1 yaml的概述
yaml語言是方便人讀寫,它的實質(zhì)就是通用的數(shù)據(jù)串行化格式
它的基本語法規(guī)則如下:
- 大小寫敏感
- 使用縮進(jìn)表示層級關(guān)系
- 縮進(jìn)時不允許使用Tab鍵,只允許使用空格
- 縮進(jìn)的空格數(shù)目不重要,只要相同層級的元素左側(cè)對齊即可
1.2 yaml的數(shù)據(jù)結(jié)構(gòu)
- 對象,鍵值對的集合
- 數(shù)組,一組按次序排列的值,又稱序列
- 純量,單個的,不可再分的值
1.2.1 docker compose.yml文件的常用手段
? ? ? ? ? ? ? ? 字段?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 描述
build ?docker ? filecontext?? ?指定Dockerfile文件名構(gòu)建鏡像上下文路徑
image? ? ? ? ? ? ? ? ? ? ? ? ? 指定鏡像
command? ? ? ? ? ? ? ? ? ?執(zhí)行命令,覆蓋默認(rèn)命令
container name? ? ? ? ?指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無法scale
deploy? ? ? ? ? ? ? ? ? ? ? ? 指定部署和運行服務(wù)相關(guān)配置,只能在Swarm模式使用
environment? ? ? ? ? ? ? ?添加環(huán)境變量
networks? ? ? ? ? ? ? ? ? ? 加入網(wǎng)絡(luò)
ports? ? ? ? ? ? ? ? ? ? ? ? ? ?暴露容器端口,與-p相同,但端口不能低于60
volumes? ? ? ? ? ? ? ? ? ? ? 掛載宿主機路徑或命令卷
restart? ? ? ? ? ? ? ? ? ? ? ?? ?重啟策略,默認(rèn)no,always,no-failure,unless-stoped
hostname? ? ? ? ? ? ? ? ? ? 容器主機名
?
1.3?docker compose
docker-compose -h ? ? ? ? ? ? ? ? ? ? ? ? ? # 查看幫助
docker-compose up ? ? ? ? ? ? ? ? ? ? ? ? ? # 創(chuàng)建并運行所有容器
docker-compose up -d ? ? ? ? ? ? ? ? ? ? ? ?# 創(chuàng)建并后臺運行所有容器
docker-compose ps ? ? ? ? ? ? ? ? ? ? ? ? ? # 顯示所用容器信息
docker-compose -f docker-compose.yml up -d ?# 指定模板
docker-compose down ? ? ? ? ? ? ? ? ? ? ? ? # 停止并刪除容器、網(wǎng)絡(luò)、卷、鏡像。
docker-compose rm ? ? ? ? ? ? ? ? ? ? ? ? ? # 刪除容器
docker-compose logs ? ? ? ? ? ? ? ? ? ? ? ? # 查看容器輸出日志
docker-compose pull ? ? ? ? ? ? ? ? ? ? ? ? # 拉取依賴鏡像
dokcer-compose config ? ? ? ? ? ? ? ? ? ? ? # 檢查配置
dokcer-compose config -q ? ? ? ? ? ? ? ? ? ?# 驗證yaml配置文件是否正確,有問題才有輸出
docker-compose pause ? ? ? ? ? ? ? ? ? ? ? ?# 暫停容器
docker-compose unpause ? ? ? ? ? ? ? ? ? ? ?# 恢復(fù)暫停
docker-compose restart ? ? ? ? ? ? ? ? ? ? ?# 重啟服務(wù)
docker-compose start ? ? ? ? ? ? ? ? ? ? ? ?# 啟動服務(wù)
docker-compose stop ? ? ? ? ? ? ? ? ? ? ? ? # 停止服務(wù)
1.4 yml文件編寫
模板文件是使用 Docker Compose 的核心,涉及到的指令關(guān)鍵字也比較多。默認(rèn)的模板文件名稱為 docker-compose.yml ,格式為YAML 格式。一個 docker-compose.yml 文件可以分為三層:
#第一層 版本號 version: "3" ?#代表使用docker-compose項目的版本號 #第二層:services 服務(wù)配置 services: ? web: ? ? build: . ? ? ports: ?#宿主機和容器的端口映射 ? ? ? - "5000:5000" ? ? volumes: ? ? ? - .:/code ? redis: ? ? ?image: "redis:alpine" # 第三層 其他配置 網(wǎng)絡(luò)、卷、全局規(guī)劃
?
?二、部署compose
2.1 下載docker-compose安裝包
從github上下載docker-compose二進(jìn)制文件安裝
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
?
?2.2 部署docker-compose
//可以在任何目錄下使用compose命令
cp -p docker-compose /usr/local/bin
chmod +x docker-compose
[root@localhost /]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3
2.3 部署docker-compose
//可以在任何目錄下使用compose命令
cp -p docker-compose /usr/local/bin
chmod +x docker-compose
[root@localhost /]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3?
?首先創(chuàng)建一個總的目錄
mkdir /root/compose_nginx
cd /root/compose_nginx
?
yum install -t tree
?
?添加docker-compose.yml
[root@server1 compose_nginx]# vi docker-compose.yml?
version: '3'
services:
? nginx:
? ? hostname: nginx
? ? build:
? ? ? context: ./nginx
? ? ? dockerfile: Dockerfile
? ? ports:
? ? ? - 1216:80
? ? ? - 1217:443
? ? networks:
? ? ? - zz
? ? volumes:
? ? ? - ./wwwroot:/usr/local/nginx/html
networks:? zz:
?
?
?
?在nginx目錄下添加配置文件
[root@server1 compose_nginx]# cd nginx/
[root@server1 nginx]# cat Dockerfile?
FROM centos:7
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.2.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
RUN make -j 4 && make install
RUN ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#ENV PATH /usr/local/nginx/sbin/:PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
CMD ["/usr/local/nginx/sbin/nginx"]
?
?
在網(wǎng)頁上設(shè)置
[root@localhost compose_nginx]# ls
docker-compose.yml ?nginx ?wwwroot
?
echo "hello world" > index.html
?
?
2.4 開啟驗證
?使用compose去安裝運行nginx容器
docker-compose -f docker-compose.yml up -d
?
?
?
?
?三、compose編排安裝tomcat容器
cd /opt
mkdir compose-tomcat
cd compose-tomcat
mkdir tomcat
cd tomcat
==拖入安裝包apache-tomcat-9.0.16.tar.gz 、jdk-8u91-linux-x64.tar.gz==
?
vim Dockerfile
FROM centos:7
?
ADD apache-tomcat-9.0.16.tar.gz /usr/local
ADD jdk-8u91-linux-x64.tar.gz /usr/local
?
WORKDIR /usr/local
?
RUN mv apache-tomcat-9.0.16 tomcat
RUN mv jdk1.8.0_91 java
?
ENV JAVA_HOME /usr/local/java
ENV CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH $JAVA_HOME/bin:$PATH
?
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
?
====>:wq
?
cd ..
vim tomcat-compose.yml
?
version: '3'
services:
?tomcat:
? hostname: tomcat
? build :
? ?context: ./tomcat
? ?dockerfile: Dockerfile
? ports:
? ?- 7788:8080
? networks:
? ?- cluster
networks:
?cluster:
?
====>:wq
?
docker-compose -f tomcat-compose.yml up -d
?
==真機訪問http://IP:7788==
?
?
總結(jié)
?
docker-compose默認(rèn)的模板文件是 docker-compose.yml,其中定義的每個服務(wù)都必須通過 image 指令指定鏡像或 build 指令(需要 Dockerfile)來自動構(gòu)建。
其它大部分指令都跟 docker run 中的類似。
如果使用 build 指令,在 Dockerfile 中設(shè)置的選項(例如:CMD, EXPOSE, VOLUME, ENV 等) 將會自動被獲取,無需在 docker-compose.yml 中再次設(shè)置。?
使用Compose 基本上分為三步:文章來源:http://www.zghlxwxcb.cn/news/detail-429039.html
Dockerfile 定義應(yīng)用的運行環(huán)境
docker-compose.yml 定義組成應(yīng)用的各服務(wù)
docker-compose up 啟動整個應(yīng)用文章來源地址http://www.zghlxwxcb.cn/news/detail-429039.html
到了這里,關(guān)于docker-compose的部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!