GVKun编程网logo

CentOS7中使用docker-compose部署服务(centos7 docker compose)

12

在本文中,我们将为您详细介绍CentOS7中使用docker-compose部署服务的相关知识,并且为您解答关于centos7dockercompose的疑问,此外,我们还会提供一些关于CentOS7

在本文中,我们将为您详细介绍CentOS7中使用docker-compose部署服务的相关知识,并且为您解答关于centos7 docker compose的疑问,此外,我们还会提供一些关于CentOS7 下 离线安装Docker 和 Docker Compose、CentOS7 下安装 Docker-Compose、CentOS7 和 Ubuntu 下安装 Docker & Docker-Compose、centos7 安装 Docker Compose的有用信息。

本文目录一览:

CentOS7中使用docker-compose部署服务(centos7 docker compose)

CentOS7中使用docker-compose部署服务(centos7 docker compose)

点击上方蓝色字"码之初"关注,右上角选择"设为星标"

开始Java基础、架构设计、源码阅读

关注=进步,可能还会加薪哦!


之前讲解过Docker安装单个服务的系列教程,没看过的可以点击下面的链接回顾一下:

  • Docker学习笔记一:Docker简介与安装

  • MacOS安装Docker傻瓜式教程

  • mac系统下docker安装配置mysql详细步骤

  • mac系统Docker安装Redis教程

  • mac系统Docker安装Nginx教程



Docker的用途我在这里就不做赘述了,不懂的自己戳上面的链接学习,假如现在我们有个Springboot应用,里面用到了mysql、Redis、Nginx等服务,那现在我们要用Docker部署我们的服务,通常需要下面几步:

  • 安装docker

  • 使用docker安装Redis

  • 使用docker安装Mysql

  • 使用docker安装、配置Nginx

  • springboot应用打成Jar包和编写dockerfile


安装好以上服务之后,我们还要一一启动,然后再运行项目才能访问,虽然说docker有一次打包到处运行、节省存储空间和资源,应用隔离和服务器整合等优点,但是仔细看上面的部署步骤,即便我们用了docker,也还是要在docker里手动安装其他服务,现在只有redis、mysql、nginx几个服务,如果我们以后还要加ES、Mongo等等越来越多的服务,好像并没有提高很多效率,那作为“万能”的程序员,有解决方法吗?那必须有啊,下面就进入本文的重点:docker-compose。



docker-compose简介


Compose是用于定义和运行多容器Docker应用程序的工具,是docker的服务编排工具,主要应用于构建基于Docker的复杂应用,compose通过一个配置文件来管理多个docker容器,适合组合使用多个容器进行开发的场景。
使用compose,可以使用yml或者yaml文件配置应用程序的服务。 然后,通过一个命令,可以从配置中创建和启动所有服务。更多资料可以参考官网:https://docs.docker.com/compose/overview/

docker-compose安装


安装docker相关依赖环境:
# 安装依赖sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 添加docker下载仓库sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装docker-cesudo yum install docker-ce# 启动docker-cesudo systemctl start docker# 验证sudo docker --version

compose官网安装文档 https://docs.docker.com/compose/install/#install-compose
1、安装Run this command to download the latest version of Docker Composesudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
2、赋权Apply executable permissions to the binary:sudo chmod +x /usr/local/bin/docker-compose
3、Optionally, install command completion for the bash and zsh shell.
4、测试(查看版本)Test the installationdocker-compose --version


docker-compose部署服务详解

使用compose部署应用一般需要下面几个步骤:
  1. 用dockerfile,或者镜像定义应用程序所依赖的环境,以便在任何地方都可以直接复制。

  2. 在docker-compose.yaml中定义应用程序需要的服务,以便这些服务可以在单独的环境中一起运行。

  3. 运行docker-compose build 安装应用程序所需要的服务镜像。

  4. 运行docker-compose up -d 启动并在后台运行整个应用程序。

  5. 运行docker compose down 停止整个应用程序。


下面我们来详细讲解上面的四个步骤。


docker-compose部署Spring Boot+Nginx+Redis+Mysql实战

历经了一个月,终于将个人的博客发布上线了,原来准备用传统的方式先草草上线,可是对于一个对前沿技术有强迫症的开发者来说,哪怕不精通不擅长,至少要懂点皮毛,要在别人聊起的时候至少能听懂,于是果断换了docker方式部署,可部署过程中发现既然都已经开始了,索性就再为难自己一下,干脆一次性到位好了,直接用compose方式。其实人很多时候都是在“为难自己”的过程中成长,只要你勇敢的迈出第一步。


好了,废话少说,在大概的看了官方文档,又谷哥度娘了几篇相关文章,在失败了7次,解决了4个问题之后,最终如愿使用compose方式上线成功,下面就将整个过程记录下来和大家分享,所有步骤都经过本人亲测,希望对码之初的乡亲们也有帮助。


一、看一下完整的目录结构


下面的common、dao、service、web模块不用多做介绍了,是个人博客项目,上面的docker-build文件夹就是使用compose方式部署的文件夹,主要包括:

  • Spring Boot web项目打成的jar包

  • jar对应的Dockerfile

  • compose方式的核心配置文件docker-compose.yaml

  • config文件夹,是将宿主机本地配置挂载到docker容器中的配置文件

  • data文件夹:存放的一些初始化数据或者配置

  • log日志文件夹


二、Dockerfile文件详解
FROM java:8#FROM maven:3.5-jdk-8VOLUME /tmpADD mazhichu.jar mazhichu.jarEXPOSE 8082#RUN bash -c ''touch /mazhichu.jar''ENTRYPOINT ["java","-Djava.security.egd=file:/prod/./urandom","-Dspring.profiles.active=prod", "-jar","/mazhichu.jar"]
命令解释:
  • FROM java:8:基础镜像环境 JDK1.8

  • VOLUME /tmp:指定了挂载目录

  • ADD mazhichu.jar mazhichu.jar:把指定的 jar 包拷贝到 Docker 容器中并命名为 mazhichu.jar

  • EXPOSE 8082:运行监听端口

  • RUN bash -c ''touch /mazhichu.jar'':等同于上面的拷贝jar文件到容器

  • ENTRYPOINT...:启动jar的命令并指定运行环境等参数



三、docker-compose.yaml文件详解
version: ''3''
services:
nginx: container_name: nginx image: nginx:1.14 environment: - TZ=Asia/Shanghai ports: - "80:80" volumes: - ./config/nginx/conf.d:/etc/nginx/conf.d# - ./data/nginx/:/usr/share/nginx/html/ - ./log/nginx/:/var/log/nginx/ restart: always
redis: container_name: redis image: redis:5.0.7 environment: - TZ=Asia/Shanghai ports: - "6379:6379" volumes: - ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf - ./data/redis/:/data/ - ./log/redis/:/var/log/redis/ command: redis-server /usr/local/etc/redis/redis.conf restart: always
mysql: container_name: mysql image: mysql:8.0.18 environment: TZ: Asia/Shanghai MYSQL_DATABASE: mazhichu MYSQL_ROOT_PASSWORD: Moore@2019 MYSQL_ROOT_HOST: ''%'' ports: - "3306:3306" volumes: - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf - ./data/mysql/:/var/lib/mysql/ - ./data/init/:/docker-entrypoint-initdb.d/ - ./log/mysql/:/var/log/mysql/ command: [ ''--character-set-server=utf8mb4'', ''--collation-server=utf8mb4_unicode_ci'', #这行代码解决无法访问的问题 ''--default-authentication-plugin=mysql_native_password'' ] security_opt: - seccomp:unconfined restart: always
mazhichu: container_name: mazhichu build: context: . dockerfile: Dockerfile environment: TZ: Asia/Shanghai spring.datasource.host: mysql spring.redis.host: redis expose: - "8082" depends_on: - nginx - redis - mysql links: - "mysql:mysql" restart: always# networks:# - my-network# command: mvn clean spring-boot:run -Dspring-boot.run.profiles=prod
配置解释:
  • version: ''3'': 表示使用第三代语法来构建 docker-compose.yaml 文件。

  • services: 用来表示 compose 需要启动的服务,上面的配置文件中有四个服务分别为:nginx、redis、mysql还有我的博客项目mazhichu(码之初)。

  • Image:指定下载镜像版本

  • container_name: 指定容器名称

  • environment: 此节点下的信息会当作环境变量传入容器,例如mysql 服务配置了数据库、密码和权限信息。

  • ports: 表示对外开放的端口

  • volumes: 加载本地目录下的配置文件到容器目标地址下

  • restart: always 表示如果服务启动不成功会一直尝试。

  • depends_on:配置依赖服务,表示需要先启动 depends_on 下面的服务后,再启动本服务。

  • links:与depends_on相对应,depends_on控制启动顺序,links控制容器连接问题。值为"服务名:别名"或者直接使用服务名

  • command: mvn clean spring-boot:run -Dspring-boot.run.profiles=docker: 表示以这个命令来启动项目,-Dspring-boot.run.profiles=prodr表示使用 application-prod.yml文件配置信息进行启动。

  • networks:加入指定网络,我这儿没用到。


四、config文件夹详解


config文件夹下是将宿主机本地配置挂载到docker容器中的配置,在docker-compose.yaml文件中使用volumes指定。因为单个安装这些服务时我们也会这样做,可以见文章开头的相关文章,这儿我就把我的贴一下,大家参考一下就好。


my.cnf:mysql的配置,注意改变加密方式那个位置

[client]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 数据库唯一 ID,主从的标识号绝对不能重复。server-id = 1
# 开启 bin-log,并指定文件目录和文件名前缀log-bin=/var/log/mysql/binlog
# bin-log 日志文件格式,设置为 MIXED 可以防止主键重复。binlog_format = mixed
# 改变加密方式,远程连接(这个很重要)default_authentication_plugin=mysql_native_password
# 解决远程访问慢问题skip-name-resolve
[mysql]default-character-set=utf8mb4


mzc.conf主要配置ip域名映射,注意proxy_pass那儿的码之初是docker-compose.yaml文件中指定的服务名。

upstream mazhichu { server mazhichu:8082; }server { listen 80; server_name www.mazhichu.cn; charset utf-8;
location / { proxy_pass http://mazhichu; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}


redis.conf我这儿其实就是redis.conf的文件,只是改变了里面的连接redis的密码。


五、详细步骤


1、将docker-build文件夹上传到centos指定目录中,使用命令:

scp -r docker-build mzc:/usr/local/server

友情提示:

  1. 直接使用scp拷贝文件提示无权限的时候,需要加上一个-r就可以了。

  2. mzc:/usr/local/server:这儿我直接使用的远程服务器别名,是不是很方便,感兴趣的可以看我这篇公众号:ssh使用别名免密登录远程服务器


2、给log文件夹加上所有权限,然后重启一下docker服务



3、使用docker-compose build构建服务



4、使用docker-compose up -d 启动并在后台运行yaml中定义的所有服务


至此,使用compose方式部署Spring Boot+Nginx+Redis+Mysql服务全部完成,访问博客主页 http://www.mazhichu.cn ,看到可以成功访问。



docker-compose常用命令介绍

  • docker-compose --verbose:输出更多的调试信息

  • docker-compose --version:查看compose的版本

  • docker-compose -f --file FILE:使用特定的compose模板文件,默认为docker-compose.yaml。

  • docker-compose  -p --project-name NAME 指定项目名称,默认使用目录名称。

  • docker-compose  build:构建或重建服务

  • docker-compose ps:查看已经启动的服务状态       

  • docker-compose kill:停止某个服务、杀掉容器       

  • docker-compose logs:可以查看某个服务的log、显示容器的输出内容       

  • docker-compose port:打印绑定的public port(开放端口)        

  • docker-compose pull:拉取服务镜像      

  • docker-compose up:启动yml定义的所有服务     

  • docker-compose stop:停止yml中定义的所有服务       

  • docker-compose start:启动被停止的yml中的所有服务        

  • docker-compose kill:强行停止yml中定义的所有服务        

  • docker-compose rm:删除yml中定义的所有服务      

  • docker-compose restart:重启yml中定义的所有服务        

  • docker-compose scale:设置服务的容器数目

  • docker-compose run:运行一个一次性命令




总结

在写这篇文章之前,我从来没有接触过compose,以前只关注过docker一些基础知识,整个部署过程花了我整整一天的时间,从看文档到查资料再到不断试错,最终又花了半天时间总结写这篇文章。 说了这么多,只是想表达如果你想学习一门语言或者技术,那你就必须走近它,必须动手尝试才能有真正的成长和体验,就跟你看到一个漂亮的高冷小姐姐一样,你只有走近她才有接触的机会,只有敢于追求才有成功脱单的机会,道理是一样一样的。

最后,原创不易,如果乡亲们觉得本文不错,麻烦帮忙右下角点个在看或者分享给其他有需要的人,这就是给我最大的鼓励和坚持原创的动力了,谢谢!



码之初

一个走心的技术公众号 

Java基础|架构设计|源码阅读|面试



如果您觉得本文不错,有参考价值,

麻烦您点一下右下角的“在看”

或者转发给有需要的人,

这就是对我最大的支持,谢谢!

本文分享自微信公众号 - 码之初(ma_zhichu)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

CentOS7 下 离线安装Docker 和 Docker Compose

CentOS7 下 离线安装Docker 和 Docker Compose

GitHub地址:点击前往

Docker离线安装

1.docker的rpm安装包下载

  • 下载地址:点击前往
  • 下载版本:docker-ce-17.12.0.ce-1.el7.centos.x86_64.rpm

2.所需依赖包下载(8 + 1)

****九个依赖包均在上面的github里

  • 前八个依赖包列表:

    1. audit-libs-python-2.8.5-4.el7.x86_64.rpm
    2. checkpolicy-2.5-8.el7.x86_64.rpm
    3. libcgroup-0.41-21.el7.x86_64.rpm
    4. libseccomp-2.3.1-3.el7.x86_64.rpm
    5. libsemanage-2.5-14.el7.x86_64.rpm
    6. policycoreutils-python-2.5-33.el7.x86_64.rpm
    7. python-IPy-0.75-6.el7.noarch.rpm
    8. setools-libs-3.3.8-4.el7.x86_64.rpm
  • 最后一个依赖包

                9. container-selinux-2.107-3.el7.noarch.rpm

3.安装

  • 本文测试路径:root/docker/rpm
  • 把前8个依赖上传至root/docker路径下
  • 把docker安装包和第9个依赖上传至root/docker/rpm路径下
  • 上传成功后docker路径下的文件结构:

        

  • 上传成功后rpm路径下的文件结构:

  • 批量安装docker路径下的依赖包:
rpm -Uvh *.rpm --nodeps --force

  • 安装 container-selinux-2.107-3.el7.noarch.rpm :
rpm -Uvh container-selinux-2.107-3.el7.noarch.rpm

  • 安装docker:
rpm -Uvh docker-ce-17.12.0.ce-1.el7.centos.x86_64.rpm

  • 启动 docker:systemctl start docker
  • 查看 docker版本:docker -v

  • 至此,docker安装成功

Docker Compose离线安装

1.下载 Linux 版本的 Docker Compose

  • 下载地址:点击前往
  • 文件名:docker-compose-Linux-x86_64

2.安装

  • 将下载下来的“docker-compose-Linux-x86_64”文件上传至root目录下。
  • 执行如下命令将其移动到 /usr/local/bin,并改名为“docker-compose
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
  • 执行如下命令添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
  • 使用 docker-compose -v 命令测试是否安装成功

  • 至此,Docker Compose 安装成功。

CentOS7 下安装 Docker-Compose

CentOS7 下安装 Docker-Compose

1. 安装 python-pip
yum install python-pip
2. 无安装包
yum -y install epel-release
3. 升级 python-pip
pip install --upgrade pip
4. 安装 docker-compse
pip install docker-compose
5. 查看版本号
docker-compose -version
6. 卸载
pip uninstall docker-compose
7. 安装指定版本
pip install docker-compose==1.5.0

 

CentOS7 和 Ubuntu 下安装 Docker & Docker-Compose

CentOS7 和 Ubuntu 下安装 Docker & Docker-Compose

  本篇介绍如何在 CentOS 7.6 和 Ubuntu 16.04 下安装 Docker & Docker-Compose。

CentOS 篇

安装 Docker

# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)
# yum remove docker docker-common docker-selinux                                            # 如之前安装,先卸载
# yum install -y yum-utils device-mapper-persistent-data lvm2                   # 安装依赖
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo     # 配置软件包源
# yum install docker-ce -y                                        # 安装docker
# systemctl start docker                                         # 启动docker服务 
# systemctl enable docker                                         # 设置开机启动
# docker -v                                                 # 查看docker 版本
# docker info                                                # 查看docker详细信息
# docker -v
Docker version 19.03.5, build 633a0ea
# docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:25:41 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea
  Built:            Wed Nov 13 07:24:18 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

安装 Docker-Compose

  • 稳定版
# yum install -y epel-release
# yum install docker-compose -y   # 安装
# docker-compose -v
docker-compose version 1.18.0, build 8dd22a9
  • 最新版

  查看最新版本:https://github.com/docker/compose/releases/latest

# curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# mv /usr/local/bin/docker-compose /usr/bin/# docker-compose -v
docker-compose version 1.25.0, build 0a186604

  这样,当前最新版本就安装好了。

Ubuntu 篇

安装 Docker

# cat /etc/issue
Ubuntu 16.04.6 LTS \n \l
# apt update            # 更新
# apt install docker.io -y    # 安装docker
# docker -v            # 查看docker版本信息
Docker version 18.09.7, build 2d0083d

安装 Docker-Compose

# apt install docker-compose -y
# docker-compose -v
docker-compose version 1.8.0, build unknown

  Ubuntu 通过 apt 安装 docker-compose,版本较老,如果要更新版本的 docker-compose,请参考 CentOS7.6 安装 Docker-Compose 部分。

原文出处:https://www.cnblogs.com/Hi-blog/p/How-to-Install-Doker-and-Docker-Compose-on-CentOS-and-Ubuntu.html

centos7 安装 Docker Compose

centos7 安装 Docker Compose

介绍

Docker Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
Docker Compose 中的两个重要概念:

  • 服务 (service):一个应用容器,实际上可以运行多个相同镜像的实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元。

一个项目可以由多个服务关联(容器)而成,并使用 docker-compose.yml 进行管理。

安装步骤

安装 python pip
1、首先检查 linux 有没有安装 python-pip 包,终端执行 pip -V

[root@iz51hzu4zdjgpnz ~]$ pip -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)

(笔者已经安装好了)
2、没有 python-pip 包就执行命令

 [root@iz51hzu4zdjgpnz ~]# yum -y install epel-release

3、执行成功之后,再次执行 yum -y install python-pip

 [root@iz51hzu4zdjgpnz ~]# yum -y install python-pip

4、对安装好的 pip 进行升级 pip install --upgrade pip

 [root@iz51hzu4zdjgpnz ~]# pip install --upgrade pip

(至此,pip 安装好了,执行 pip -V 再次检查 pip 环境。)

安装 Docker-Compose
1、终端执行:pip install docker-compose

[root@iz51hzu4zdjgpnz ~]# pip install docker-compose

2、检查 docker-compose 安装

[root@iz51hzu4zdjgpnz ~]# docker-compose -version
docker-compose version 1.21.2, build a133471

(安装成功!)

 



作者:荒原_狼
链接:https://www.jianshu.com/p/10d476c5ade1
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

关于CentOS7中使用docker-compose部署服务centos7 docker compose的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于CentOS7 下 离线安装Docker 和 Docker Compose、CentOS7 下安装 Docker-Compose、CentOS7 和 Ubuntu 下安装 Docker & Docker-Compose、centos7 安装 Docker Compose的相关信息,请在本站寻找。

本文标签:

上一篇docker tomcat 部署war包 报错 : JVMCFRE003 bad major version;(dockerfile tomcat war)

下一篇PHP json_decode返回null解析失败原因(php json_decode null)