在本文中,我们将为您详细介绍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 和 Docker Compose
- CentOS7 下安装 Docker-Compose
- CentOS7 和 Ubuntu 下安装 Docker & 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简介
# 安装依赖
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-ce
sudo yum install docker-ce
# 启动docker-ce
sudo systemctl start docker
# 验证
sudo docker --version
1、安装Run this command to download the latest version of Docker Compose
sudo 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 installation
docker-compose --version
用dockerfile,或者镜像定义应用程序所依赖的环境,以便在任何地方都可以直接复制。
在docker-compose.yaml中定义应用程序需要的服务,以便这些服务可以在单独的环境中一起运行。
运行docker-compose build 安装应用程序所需要的服务镜像。
运行docker-compose up -d 启动并在后台运行整个应用程序。
运行docker compose down 停止整个应用程序。
历经了一个月,终于将个人的博客发布上线了,原来准备用传统的方式先草草上线,可是对于一个对前沿技术有强迫症的开发者来说,哪怕不精通不擅长,至少要懂点皮毛,要在别人聊起的时候至少能听懂,于是果断换了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日志文件夹
FROM java:8
#FROM maven:3.5-jdk-8
VOLUME /tmp
ADD mazhichu.jar mazhichu.jar
EXPOSE 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的命令并指定运行环境等参数
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:加入指定网络,我这儿没用到。
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
友情提示:
直接使用scp拷贝文件提示无权限的时候,需要加上一个-r就可以了。
mzc:/usr/local/server:这儿我直接使用的远程服务器别名,是不是很方便,感兴趣的可以看我这篇公众号:ssh使用别名免密登录远程服务器
2、给log文件夹加上所有权限,然后重启一下docker服务
3、使用docker-compose build构建服务
4、使用docker-compose up -d 启动并在后台运行yaml中定义的所有服务
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:运行一个一次性命令


码之初
一个走心的技术公众号

Java基础|架构设计|源码阅读|面试
如果您觉得本文不错,有参考价值,
麻烦您点一下右下角的“在看”,
或者转发给有需要的人,
这就是对我最大的支持,谢谢!
本文分享自微信公众号 - 码之初(ma_zhichu)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
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里
前八个依赖包列表:
- audit-libs-python-2.8.5-4.el7.x86_64.rpm
- checkpolicy-2.5-8.el7.x86_64.rpm
- libcgroup-0.41-21.el7.x86_64.rpm
- libseccomp-2.3.1-3.el7.x86_64.rpm
- libsemanage-2.5-14.el7.x86_64.rpm
- policycoreutils-python-2.5-33.el7.x86_64.rpm
- python-IPy-0.75-6.el7.noarch.rpm
- 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
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
本篇介绍如何在 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
介绍
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的相关信息,请在本站寻找。
本文标签: