热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Docker进阶DockerCompose

 1.DockerCompose介绍2.DockerCompose安装2.1下载使用国内地址进行瞎子啊2.2授权2.3测试3.开始使用DockerCompose3.1创建测试目录3

 

1.Docker Compose介绍

2.Docker Compose安装

2.1下载使用国内地址进行瞎子啊

2.2授权

2.3测试

3.开始使用Docker Compose

3.1创建测试目录

3.2创建app.py文件

3.3创建requirements.txt

3.4创建Dockerfile

3.5在Compose文件中定义服务

3.6使用Compose构建并运行程序

3.7验证

3.8编辑Compose文件以添加绑定挂载

3.9重新构建

3.10更新应用程序

3.11其它命令

4.compose配置编写规则

4.1配置规则

4.2官网地址

5.一键部署WordPress(官方实例)

5.1定义项目

5.2创建docker-compose.yml

5.3构建项目

 


1.Docker Compose介绍

定义、运行多个容器(YAML文件)

作用:批量容器编排

Docker Compose是Docke官方的开源项目。需要单独安装

(1)服务services:容器、应用(例如:单个web、redis、redis)

(2)项目project:一组关联的容器。(例如:博客:web,mysql)

 


2.Docker Compose安装

2.1下载使用国内地址进行瞎子啊

(1)官网地址(不推荐 国外地址 太慢了)

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

(2)国内地址

curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2.2授权

chmod +x /usr/local/bin/docker-compose

2.3测试

docker-compose --version

 


3.开始使用Docker Compose

官方实例:https://docs.docker.com/compose/gettingstarted/)

3.1创建测试目录

pwd

mkdir composetest

cd composetest/

pwd

3.2创建app.py文件

vim app.py

1 import time
2
3 import redis
4 from flask import Flask
5
6 app = Flask(__name__)
7 cache = redis.Redis(host='redis', port=6379)
8
9 def get_hit_count():
10 retries = 5
11 while True:
12 try:
13 return cache.incr('hits')
14 except redis.exceptions.ConnectionError as exc:
15 if retries == 0:
16 raise exc
17 retries -= 1
18 time.sleep(0.5)
19
20 @app.route('/')
21 def hello():
22 count = get_hit_count()
23 return 'Hello World! I have been seen {} times.\n'.format(count)

View Code

3.3创建requirements.txt

vim requirements.txt

 

3.4创建Dockerfile

vim Dockerfile

1 # syntax=docker/dockerfile:1
2 FROM python:3.7-alpine
3 WORKDIR /code
4 ENV FLASK_APP=app.py
5 ENV FLASK_RUN_HOST=0.0.0.0
6 RUN apk add --no-cache gcc musl-dev linux-headers
7 COPY requirements.txt requirements.txt
8 RUN pip install -r requirements.txt
9 EXPOSE 5000
10 COPY . .
11 CMD ["flask", "run"]

View Code

3.5在Compose文件中定义服务

vim docker-compose.yml

1 version: "3.9"
2 services:
3 web:
4 build: .
5 ports:
6 - "5000:5000"
7 redis:
8 image: "redis:alpine"

View Code

3.6使用Compose构建并运行程序

docker-compose up

3.7验证

查看localhost:5000

刷新页面

docker image ls

3.8编辑Compose文件以添加绑定挂载

vim docker-compose.yml

1 version: "3.2"
2 services:
3 web:
4 build: .
5 ports:
6 - "5000:5000"
7 volumes:
8 - .:/code
9 environment:
10 FLASK_ENV: development
11 redis:
12 image: "redis:alpine"

View Code

3.9重新构建

docker-compose up

3.10更新应用程序

vim app.py

1 import time
2
3 import redis
4 from flask import Flask
5
6 app = Flask(__name__)
7 cache = redis.Redis(host='redis', port=6379)
8
9 def get_hit_count():
10 retries = 5
11 while True:
12 try:
13 return cache.incr('hits')
14 except redis.exceptions.ConnectionError as exc:
15 if retries == 0:
16 raise exc
17 retries -= 1
18 time.sleep(0.5)
19
20 @app.route('/')
21 def hello():
22 count = get_hit_count()
23 #return 'Hello World! I have been seen {} times.\n'.format(count)
24 return 'Hello from Docker! I have been seen {} times.\n'.format(count)

View Code

3.11其它命令

docker-compose up -d        用于“分离”模式

docker-compose ps          查看当前正在运行的内容

docker-compose run          允许服务运行一次性命令

docker-compose run web env    查看web服务可用的环境变量 

docker-compose stop         停止服务

docker-compose down --volumes  关闭所有内容,完全删除容器

 


4.compose配置编写规则

4.1配置规则

version: '' #版本
services: #服务
服务1:web
#服务配置
images
build
network
...
服务2:redis
...
服务3:mysql
...
#其它配置 网络
/卷、全局规则
volumes:
networks:
configs:

4.2官网地址

https://docs.docker.com/compose/compose-file/compose-file-v3/

 


5.一键部署WordPress(官方实例)

官方地址:https://docs.docker.com/samples/wordpress/

5.1定义项目

pwd
mkdir my_wordpress
cd my_wordpress/

5.2创建docker-compose.yml

vim docker-compose.yml

1 version: "3.9"
2
3 services:
4 db:
5 image: mysql:5.7
6 volumes:
7 - db_data:/var/lib/mysql
8 restart: always
9 environment:
10 MYSQL_ROOT_PASSWORD: somewordpress
11 MYSQL_DATABASE: wordpress
12 MYSQL_USER: wordpress
13 MYSQL_PASSWORD: wordpress
14
15 wordpress:
16 depends_on:
17 - db
18 image: wordpress:latest
19 volumes:
20 - wordpress_data:/var/www/html
21 ports:
22 - "8000:80"
23 restart: always
24 environment:
25 WORDPRESS_DB_HOST: db:3306
26 WORDPRESS_DB_USER: wordpress
27 WORDPRESS_DB_PASSWORD: wordpress
28 WORDPRESS_DB_NAME: wordpress
29 volumes:
30 db_data: {}
31 wordpress_data: {}

View Code

5.3构建项目

docker-compose up -d

访问localhost:8000

 

 



推荐阅读
  • 本文详细介绍了如何使用Docker运行最简单的镜像,并创建第一个容器。通过具体的操作步骤和命令解释,帮助初学者快速上手Docker。完整课程请点击:Docker入门教程。 ... [详细]
  • 探讨在开发、学习和实验过程中,使用 VMware 和 Docker 的优劣,帮助用户根据具体需求做出最佳选择。 ... [详细]
  • 本文将指导您如何在Docker环境中高效地搜索、下载Redis镜像,并通过指定或不指定配置文件的方式启动Redis容器。同时,还将介绍如何使用redis-cli工具连接到您的Redis实例。 ... [详细]
  • 本文介绍了如何在Mac操作系统中实现对NTFS文件系统的完整读写功能,包括必要的软件安装步骤和配置方法。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • Docker 自定义网络配置详解
    本文详细介绍如何在 Docker 中自定义网络设置,包括网关和子网地址的配置。通过具体示例展示如何创建和管理自定义网络,以及容器间的通信方式。 ... [详细]
  • 深入理解Docker网络管理
    本文介绍了Docker网络管理的基本概念,包括为什么需要Docker网络管理以及Docker提供的多种网络驱动模式。同时,文章还详细解释了Docker网络相关的命令操作,帮助读者更好地理解和使用Docker网络功能。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 前言Git是目前最流行的版本控制系统,在它的基础之上,GitHub和GitLab成为当前最流行的代码托管平台,它们均提供的代码评审、项目管理、持续集成等功能,越来越多的互联网企业都 ... [详细]
  • Kubernetes与Docker cgroup驱动不匹配问题及解决方案
    当Kubernetes (k8s) 的cgroup驱动设置为systemd,而Docker使用的是cgroupfs时,这种不一致性可能导致kubectl命令执行失败。本文将详细介绍如何检查和调整Docker的cgroup驱动以确保与Kubernetes兼容。 ... [详细]
  • 本文探讨了在CentOS操作系统中遇到的Docker服务启动失败以及Docker命令无响应的问题,并提供了一套详细的排查与解决步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统中安装和配置GitLab Runner,包括添加YUM源、安装GitLab Runner以及注册Runner的具体步骤。 ... [详细]
  • 本文将详细介绍Docker的网络架构,包括Docker自带的几种网络模式及其创建方法,探讨容器间及容器与外部世界的通信方式。此外,还将简要介绍单主机环境下的容器网络配置。 ... [详细]
  • 当在Windows环境下使用Docker运行容器时,如果忘记了添加-d参数,容器将以交互模式启动。本文将指导您如何安全地退出这种模式而不终止Docker容器。 ... [详细]
  • Windows环境下部署Kubernetes Dashboard指南
    本指南详细介绍了如何在Windows系统中部署Kubernetes Dashboard,包括下载最新配置文件、修改服务类型以支持NodePort访问、下载所需镜像并启动Dashboard服务等步骤。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有