热门标签 | 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

 

 



推荐阅读
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文解析了虚拟空间类似于主机格调的搭建原理和架构,指出主机格调更近似于paas而非普通的VPS。技术上实现并不复杂,可以选择docker作为底层。提供了相关参考链接。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 使用Docker安装和运行Nexus
    本文介绍了使用Docker安装和运行Nexus的方法,包括docker-compose.yml配置和启动时可能出现的权限问题解决方法。同时提供了登录控制台验证安装的地址和登录信息。 ... [详细]
  • Dockerfile构建镜像的指令和说明
    本文介绍了Dockerfile是用来构建镜像的文本文件,其中包含了构建镜像所需的指令和说明。通过创建一个Dockerfile文件并编写内容,可以快速创建自定义的镜像。文章还提供了一个示例,展示了如何使用Dockerfile创建一个本地构建的nginx镜像,并通过docker images命令查看镜像的版本。希望本文对大家的学习有所帮助,并希望大家多多支持编程笔记。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 容器管理与容器监控influxDB
    容器管理与容器监控-influxDB什么是influxDBinfluxDB安装(1)下载镜像(2)创建容器(3 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • (九)Docker常用安装
    一、总体步骤1、搜索镜像2、拉取镜像3、查看镜像4、启动镜像5、停止镜像6、移除镜像二、安装tomcat1、dockerhub上面查找tomcat镜像 dockersearchto ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • DockerDataCenter系列(四)-离线安装UCP和DTR,Go语言社区,Golang程序员人脉社 ... [详细]
  • 随着我司的应用都开始容器化,相应的ETL流程也需要迁移到容器中。常规的SQL和shell脚本迁移之后执行基本没有问题,主要的问题在于数据接入使用kettle的场景下,kettle启 ... [详细]
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社区 版权所有