wordpress建站公司,网站开发接口文档,杭州推广平台有哪些,seo外链资源一.Docker Compse 介绍
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose#xff0c;你可以使用 YAML 文件来配置应用程序的服务、网络和卷#xff0c;然后使用单个命令创建和启动所有服务。这使得在开发、测试和部署过程中管理多容器应用程…一.Docker Compse 介绍
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose你可以使用 YAML 文件来配置应用程序的服务、网络和卷然后使用单个命令创建和启动所有服务。这使得在开发、测试和部署过程中管理多容器应用程序变得更加简单。
github地址: GitHub - docker/compose: Define and run multi-container applications with Docker
官方地址: https://docs.docker.com/compose/
1.yml 语言
AML 文件格式及编写注意事项 YAML 是一种标记语言它可以很直观的展示数据序列化格式可读性高。 类似于 json 数据描述语言语法比 json 简单的很多。 YAML 数据结构通过缩进来表示连续的项目通过减号来表示 键值对用冒号分隔数组用中括号 [] 括起来 hash 用花括号 {} 括起来
2.使用YAML时需要注意下面事项 大小写敏感 通过缩进表示层级关系 不支持制表符 tab 键缩进只能使用空格缩进 缩进的空格数目不重要只要相同层级左对齐通常开头缩进2个空格 用 # 号注释 符号字符后缩进1个空格如冒号 : 、逗号 , 、横杠 - 如果包含特殊字符用单引号()引起来会作为普通字符串处理双引号(): 特殊字符作为本身想表示的意思
指令作用演示build指定构建上下文和可选的Dockerfile用于构建镜像。build: context: /opt/test dockerfile: Dockerfiledockerfile指定Dockerfile的路径。通常在build部分中使用。dockerfile: Dockerfile.prodcontext指定构建上下文的路径即包含Dockerfile和构建上下文的目录路径context: /opt/testimage指定用于服务/容器的镜像名称。image: myapp:latestcommand覆盖由镜像指定的默认命令command: [python, app.py]container_name为容器指定自定义名称。container_name: my_containerdeploy指定部署选项如副本和放置deploy: replicas: 3environment为服务指定环境变量environment: - DEBUGtruenetworks指定连接服务的网络networks: - frontend - backendnetwork_mode指定容器的网络模式network_mode: hostports:将容器端口映射到主机端口ports: - 8080:80volumes挂载主机或其他容器的卷volumes: - nginx-data:/usr/local/nginx/htmlvolumes_from从另一个服务/容器挂载卷volumes_from: - data-containerhostname:指定主机名hostname: my-containersysctls为容器设置内核参数sysctls: - net.core.somaxconn1024restart重启策略restart: alwaysdepends_on指定该服务依赖的其他服务depends_on: - mysql
3.常用指令
命令只能在docker-compose.yml的目录下执行
命令解释build#构建镜像bundle#从当前docker compose 文件生成一个以当前目录为名称的json格式的Docker Bundle 备份文件config -q#查看当前配置没有错误不输出任何信息create#创建服务较少使用down#停止和删除所有容器、网络、镜像和卷events#从容器接收实时事件可以指定json 日志格式较少使用exec#进入指定容器进行操作help#显示帮助细信息images#显示镜像信息较少使用kill#强制终止运行中的容器logs#查看容器的日志pause#暂停服务port#查看端口ps#列出容器较少使用pull#重新拉取镜像镜像发生变化后需要重新拉取镜像较少使用push#上传镜像restart#重启服务较少使用rm#删除已经停止的服务run#一次性运行容器scale#设置指定服务运行的容器个数start#启动服务 较少使用stop#停止服务较少使用top#显示容器运行状态unpause#取消暂定up#创建并启动容器 较少使用
二.安装和准备
1.安装Docker Compose
yum安装
yum install epel-release.noarch -y
yum -y install docker-compose
二进制安装
chmod x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin
2.查看命令格式
官方文档: https://docs.docker.com/compose/reference/
docker-compose --help
Define and run multi-container applications with Docker.
Usage:docker-compose [-f arg...] [options] [COMMAND] [ARGS...]docker-compose -h|--help
#选项说明:
-f–file FILE #指定Compose 模板文件默认为docker-compose.yml
-p–project-name NAME #指定项目名称默认将使用当前所在目录名称作为项目名。
--verbose #显示更多输出信息
--log-level LEVEL #定义日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--no-ansi #不显示ANSI 控制字符
-v, --version #显示版本#以下为命令选项需要在docker-compose.yml|yaml 文件所在在目录里执行
build #构建镜像
bundle #从当前docker compose 文件生成一个以当前目录为名称的json格式的Docker Bundle 备份文件
config -q #查看当前配置没有错误不输出任何信息
create #创建服务较少使用
down #停止和删除所有容器、网络、镜像和卷
events #从容器接收实时事件可以指定json 日志格式较少使用
exec #进入指定容器进行操作
help #显示帮助细信息
images #显示镜像信息较少使用
kill #强制终止运行中的容器
logs #查看容器的日志
pause #暂停服务
port #查看端口
ps #列出容器较少使用
pull #重新拉取镜像镜像发生变化后需要重新拉取镜像较少使用
push #上传镜像
restart #重启服务较少使用
rm #删除已经停止的服务
run #一次性运行容器
scale #设置指定服务运行的容器个数
start #启动服务 较少使用
stop #停止服务较少使用
top #显示容器运行状态
unpause #取消暂定
up #创建并启动容器 较少使用
显示 docker-compose 拉起的容器 3.docker compse 文件格式
官方文档: https://docs.docker.com/compose/compose-file/
docker compose 文件是一个yaml格式的文件所以注意行首的缩进很严格默认docker-compose命令会调用当前目录下的docker-compose.yml的文件因此一般执行docker-compose命令前先进入docker-compose.yml文件所在目录
docke- compose文件的格式很不同版本版本不同语法和格式有所不同参看以下列表
三.演示
1.启动单台容器
docker compose 文件可在任意目录创建文件名为docker-compose.yml 配置文件要注意前后的缩进
[rootlocalhost harbor]#mkdir /mnt/docker-compose
[rootlocalhost harbor]#cd /mnt/docker-compose/
[rootlocalhost docker-compose]#vim docker-compose.yml
#准备yml文件
server-nginx-web:image: nginxcontainer_name: web1expose:- 80- 443ports:- 8080:80- 8443:443
2.检测语法
docker-compose config 3.启动
docker-compose up
#docker-compose start
#docker-compose up -d
后台启动
docker-compose ps 4.关闭
4.1 使用docker-compose down 会将容器直接删除 镜像也会删除
docker-compose down
docker-compose ps
docker ps -a 4.2 使用docker-compose kill 只是退出容器
docker-compose kill
docker ps -a
docker-compose ps
4.3 只删除停止的容器
docker-compose rm
5.查看事件 docker-compose events
docker-compose events
#json 格式
#docker-compose events --json 6.启动多个容器
server-nginx-web:image: nginxcontainer_name: web1expose:- 80- 443ports:- 8001:80- 8443:443
server-mysql:image: mysqlcontainer_name: mysql1[rootlocalhost docker-compose]#docker-compose config -q
# -q 静默不输出
启动
docker-compose up -d
docker ps -a 7.调用dockerfile 文件执行编排
FROM centos:centos7.9.2009
LABEL authorzhou cloud \version1.0 \descriptiontest
RUN rm -rf /etc/yum.repos.d/
ADD qh.repo /etc/yum.repos.d/
RUN yum -y install gcc gcc-c make automake pcre pcre-devel zlib zlib-devel openssl openssl-devel wget
ADD nginx-1.18.0.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.18.0 ./configure --prefix/apps/nginx make make install
COPY index.html /apps/nginx/html
EXPOSE 80
CMD [-g,daemon off;]
ENTRYPOINT [/apps/nginx/sbin/nginx][rootlocalhost centos7]#docker build -t c7:n3 .
[rootlocalhost centos7]#docker run -d -p 80:80 --name web1 c7:n1
编写compse 文件
vim /opt/compose_nginx/docker-compose.yml services:nginx:container_name: web1hostname: nginxbuild:context: /data/dockerfile/system/centos/centos7/dockerfile: Dockerfileports:- 1216:80- 1217:443networks:mynet:ipv4_address: 172.18.0.10volumes:- ./wwwroot:/usr/local/nginx/html
networks:mynet:driver: bridgeipam:config:- subnet: 172.18.0.0/16services: 定义了要运行的服务。nginx: Nginx 服务的配置。container_name: 指定容器的名称为 web1。hostname: 指定容器的主机名为 nginx。build: 指定了构建 Nginx 容器所需的上下文和 Dockerfile。ports: 将主机端口 1216 映射到容器的 80 端口将主机端口 1217 映射到容器的 443 端口。networks: 将服务连接到名为 lnmp 的自定义网络。volumes: 将主机上的 ./wwwroot 目录挂载到容器中的 /usr/local/nginx/html 目录。networks: 定义了自定义网络。lnmp: 自定义网络的配置。driver: 网络驱动程序为 bridge。ipam: IP 地址管理配置。config: 子网配置指定了 IP 地址范围。cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d
----------------------------------------------------------------------------------------------------------
-f, --file FILE 使用特定的 compose 模板文件默认为 docker-compose.yml
-p, --project-name NAME 指定项目名称默认使用目录名称
-d 在后台运行
----------------------------------------------------------------------------------------------------------docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b48dceee248f compose_nginx_nginx /run.sh About a minute ago Up About a minute 0.0.0.0:1216-80/tcp, 0.0.0.0:1217-443/tcp compose_nginx_nginx_1cd /opt/compose_nginx/
docker-compose ps #必须在docker-compose.yml所在目录执行此命令docker-compose -f docker-compose.yml up -d