一、前言

现在可谓是容器化的时代,云原生的袭来,导致go的崛起,作为一名java开发,现在慌得一批。作为知识储备,小编也是一直学关于docker的东西,还有一些持续继承jenkins

提到docker,大家都知道,以前需要在linux中安装的,现在只需要pull下来镜像,然后运行就可以直接使用了!非常的干净又卫生,但是想想我们一个web应用,是需要mysql、redis、mq等很多个应用组成的,我们使用了docker,就需要一个个的运行,很是麻烦,而且还需要给他们建立一个网桥,因为容器之间是相互隔离的!

当微面临微服务时,比如有20个微服务项目,并且相互之间有依赖关系。

Docker Compose 来轻松高效的管理容器,定义运行多个容器。

这是一个伟大工具插件docker compose来了~

今天就带大家一起安装,然后运行,跑一个demo,体验一下docker compose的快捷之处!

二、安装docker

安装Docker

三、Docker Compose 概述

Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用一个命令,您可以从您的配置中创建并启动所有服务。

Compose 适用于所有环境:生产、登台、开发、测试以及 CI 工作流程。

使用 Compose 基本上是一个三步过程:

使用定义您的应用程序的环境,Dockerfile以便可以在任何地方复制它。

定义构成您的应用程序的服务,docker-compose.yml以便它们可以在隔离环境中一起运行。

运行docker compose up,Docker compose 命令启动并运行您的整个应用程序。您也可以docker-compose up使用 docker-compose 二进制文件运行。

三、安装docker compose

之前看好多文章都是两年前的安装方式,现在小编进去官网已经变了,更加简单!我们先进入官网,一切以官网为准,任何教学都是来自于官网的教程!

docker compose官网安装地址

我们直接根据这个安装即可!

我们看到apt-get命令不是CentOS的命令而是(Debian/Ubuntu)的命令,我们使用CentOSyum进行安装即可。



输入:

yum install docker-compose-plugin



我们查看docker compose的版本,是否安装成功:

docker compose version

铛铛铛,安装完成,下面我们进行官网例子实战!!

四、入门案例体验

入门案例官网网址

1. 创建文件

创建一个文件夹来存放这次案例的文件,并切换到此文件夹下:

mkdir composetest
cd composetest/
pwd

2. 创建python程序

创建一个app.py的文件

vim app.py

添加以下内容:

import time

import redis
from flask import Flask app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379) def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5) @app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)

输入i,粘贴进行,按下Esc,输入:wq保存并退出!



细节分析:

我们看到脚本的第五行,cache = redis.Redis(host='redis', port=6379)

redis是应用程序网络上的 redis 容器的主机名。本来是host是指向ip的,现在我们交给docker compose,他会帮我们维护一个网络(后面我们在查看),实现容器名称之间的调用,就像我们微服务之间使用nacos作为注册中心,各个服务的调用使用服务名称进行调用即可,这样更加灵活,切换主机ip,不影响各个应用之间的调用。

3. 创建requirements.txt文件

vim requirements.txt
flask
redis

这里一个python需要的框架,还有一个就是实现计数的redis服务,创建文件的目的是为了方便书写docker-compose.yml,里面可以直接引用此文件!

输入i,粘贴,按下Esc,输入:wq保存并退出!

4. 创建 Dockerfile

vim Dockerfile
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

命令解释:

从 Python 3.7 映像开始构建映像

将工作目录设置为/code

设置命令使用的环境变量flask

安装 gcc 和其他依赖项

复制requirements.txt并安装 Python 依赖项

向镜像添加元数据以描述容器正在侦听端口 5000

将项目中的当前目录复制.到镜像中的workdir

将容器的默认命令设置为flask run

输入i,粘贴,按下Esc,输入:wq保存并退出!

5. 编写docker-compose.yml

vim docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "8000:5000"
redis:
image: "redis:alpine"

这个 Compose 文件定义了两个服务:web和redis.

web服务:

该服务使用从当前目录中web构建的图像,build: .是使用Dockerfile构建出来镜像,然后它将容器和主机绑定到暴露的端口:8000.。此示例服务使用 Flask Web 服务器的默认端口,5000。

redis服务:

该redis服务使用 从 Docker Hub 注册表中提取的公共Redis映像。

这里为我们展示了docker-compose.yml中管理的镜像的两种方式,一个是使用Dockerfile进行构建镜像,一个是通过Docker Hub直接拉去镜像。

6. 构建并运行

我们看到官网的命令提供的运行命令是:docker-compose up,小编试了一下没有此命令,小编试了一下这个命令就可以了。

docker compose up

这里云先拉去redis镜像,然后使用Dockerfile进行构建镜像!



小细节:

这里就是小编前面说的,会帮我们维护一个网络,就可以进行容器之间的调用了 !我们还可以发现,容器的名字是文件夹的名称-yml文件里服务名称-副本数量,不难想象最后的副本数量肯定是为了集群准备的哈!

停止应用程序:

方法是docker compose down 在第二个终端的项目目录中运行,或者在启动应用程序的原始终端中按 CTRL+C。

7. 访问测试

输入:http://192.168.84.135:8000/

每次刷新斗湖加1,使用redis实现的计数器!

8. 查看运行的容器

docker ps

9. 编辑docker-compose.yml添加绑定挂载

vim docker-compose.yml

覆盖原来的内容:

version: "3.9"
services:
web:
build: .
ports:
- "8000:5000"
volumes:
- .:/code
environment:
FLASK_ENV: development
redis:
image: "redis:alpine"

小提醒:

volumes密钥将主机上的项目目录(当前目录)挂载到/code容器内,允许您即时修改代码,而无需重建映像environment键设置 FLASK_ENV环境变量,它告诉flask run在开发模式下运行并在更改时重新加载代码。这种模式应该只在开发中使用。



我们查看挂载在linux上的文件:

10. 重新构建

docker compose up

11. 重新访问

输入:http://192.168.84.135:8000/

12. 修改app.py文件

由于应用程序代码现在使用安装到容器中,因此您可以对其代码进行更改并立即查看更改,而无需重建镜像

vim app.py

修改最后一行为:

return '我修改了哦! I have been seen {} times.\n'.format(count)

重新刷新页面:

这里就实现了测试版本的热部署

13. 以后台的方式构建

我们刚刚看到了刚刚的运行,我们是无法在使用其他命令了,这时就可以使用以后台的形式运行就不耽误我们使用其他命令了!

以后台形式构建运行:

docker compose up -d

查看正在运行的镜像:

docker compose ps



浏览器访问正常:

五、进阶案例WordPress

官网进阶案例地址

1. 创建新文件夹

mkdir my_wordpress
cd my_wordpress

2. 编写docker-compose.yml

vim docker-compose.yml
version: "3.9"

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}

docker卷db_data挂载到wordpress_data持久化 WordPress 对数据库的更新。

3. 构建项目

先停止刚刚的构建的容器:

docker stop 容器id
docker compose up -d

4. 测试访问

输入:192.168.84.135:8000/



后面就不带大家操作了,小编有篇文章专门写使用和优化Wordpress的文章,大家喜欢可以看一下哦 !

5分钟搭建wordpress个人博客网站 附赠主题和md插件

六、总结

这样我们对docker compose 有了一定的了解了吧,文章的目的主要为了记录一下自己跟着官网是否成功,还有就是有一些童鞋不喜欢看,还有就是看不太明白的童鞋提供一些帮助!

一句话送给大家:还是以官网为主,有的教学是以前的版本,你进去官网你会发现很多已经更新,或者有更好的方式了,所以还是要看官网!!

看到这里了还不给小编一键三连起来,有点对不起小编了 !!


有缘人才可以看得到的哦!!!

点击访问!小编自己的网站,里面也是有很多好的文章哦!

docker和docker compose安装使用、入门进阶案例的更多相关文章

  1. Docker Compose安装以及入门

    Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 简介 Compose 项目是 Docker 官方的开源 ...

  2. Windows10下的docker安装与入门 (一)使用docker toolbox安装docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  3. (转)Windows10下的docker安装与入门 (一)使用docker toolbox安装docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  4. linux安装docker和docker compose

    运行 sudo -s 切换到root用户. 1.卸载旧版本Docker(如果系统之前没安装过Docker,可以跳过): yum remove docker \ docker-client \ dock ...

  5. 手把手教你 Docker Compose安装DOClever

    一.什么是Docker Compose以及Docker Compose的安装和使用 查看我的另外一篇博客:Docker Compose的安装和使用 二.DOClever是什么 DOClever是一个可 ...

  6. Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  7. Windows10下的docker安装与入门 (三) 创建自己的docker镜像并且在容器中运行它

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  8. Docker: 安装配置入门[二]

    一.安装配置启动 1.环境 [root@docker1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@d ...

  9. Docker入门 - 006 Docker 多种数据库的安装

    Docker 安装 MySQL 查找Docker Hub上的mysql镜像 root@VM_16_14_centos ~# docker search mysql INDEX NAME DESCRIP ...

随机推荐

  1. Jenkins 脚本命令行应用总结

    Jenkins脚本命令行应用总结 测试环境 Jenkins 2.304 脚本命令行入口 Jenkins主页→系统管理→脚本命令行 遍历项目 例子:获取所有自由风格项目及相关项目信息 def proje ...

  2. mpvue使用scss

    安装scss 安装命令如下,不带版本号可能会导致报错 npm i sass-loader@7.3.1 -D npm i node-sass@4.14.1 -D 然后修改 build 文件夹下的 web ...

  3. window升级Nginx1.10到1.12.2

    window升级Nginx较为简单,只需要修改配置文件,然后启动即可. 环境:window系统 服务器:10.123.98.92 Nginx目录:e:\hgeagle\nginx-1.10.1 旧版N ...

  4. oracle三个重要参数文件:pfile和spfile和init.ora

    Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动第一个阶段时候加载的, 决定了数据库的物理 结构.内存.数据库的限制及系统大量的默认值.数据库的各种物理 ...

  5. 『忘了再学』Shell基础 — 8、管道符介绍

    我们之前已经有文章说过管道符了,今天这里再简单总结一下用法. 1.行提取命令grep grep命令的作用,是在指定的文件中,搜索符合条件的字符串. 命令格式: [root@localhost ~ ] ...

  6. ORM中聚合函数、分组查询、Django开启事务、ORM中常用字段及参数、数据库查询优化

    聚合函数 名称 作用 Max() 最大值 Min() 最小值 Sum() 求和 Count() 计数 Avg() 平均值 关键字: aggregate 聚合查询通常都是配合分组一起使用的 关于数据库的 ...

  7. linux目录结构知识

    1.系统目录结构介绍 1.目录结构特点 linux系统中的目录一切从根开始. Linux系统中的目录结构拥有层次. Linux系统中的目录需要挂载使用. 2.目录挂载初识 挂载的命令:mount mo ...

  8. Bootstrap Blazor 组件库 Row 布局组件(栅格系统)

    原文链接:https://www.cnblogs.com/ysmc/p/16133351.html 在 Bootstrap 中,栅格相信大家都很熟悉,简直就是布局神器啊,Bootstrap Blazo ...

  9. 设置网站标题时找不到index.html问题解决

    都知道,修改网站标题在根目录index.html里修改.但是在vue3更新后,index.html就没有放这里了,放到了public中.去public中一眼就能看到.我也是去那里就找到了.

  10. HTML5+JavaScript+MUI 毕业答辩常见问题

    问题1:HTML5前端开发环境有哪些? HTML5网页前端开发,实际也是HTML网页开发,HTML5知识万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改的第五次 ...