在这里,我们将给大家分享关于Docker-Compose快速搭建博客的知识,让您更了解docker-compose.yml详细分析的本质,同时也会涉及到如何更有效地25.dockercompose简介
在这里,我们将给大家分享关于Docker-Compose 快速搭建博客的知识,让您更了解docker-compose.yml详细分析的本质,同时也会涉及到如何更有效地25.docker compose 简介 和 docker-compose.yml 参数介绍、Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本、Docker Compose 部署 Nexus3 时的 docker-compose,yml 代码、Docker Compose:没有这样的图像 - Docker Compose: No such image的内容。
本文目录一览:- Docker-Compose 快速搭建博客(docker-compose.yml)详细分析(docker compose yml详解)
- 25.docker compose 简介 和 docker-compose.yml 参数介绍
- Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本
- Docker Compose 部署 Nexus3 时的 docker-compose,yml 代码
- Docker Compose:没有这样的图像 - Docker Compose: No such image
Docker-Compose 快速搭建博客(docker-compose.yml)详细分析(docker compose yml详解)
- docker-compose.yml
-
version: ''3.3'' services: db: image: mysql:5.7 #docker run -itd mysql:5.7 volumes: - db_data:/var/lib/mysql #采用的是卷标的形式挂载(注意:- db_data是参数,可以变,自定义,必须与下面对应) restart: always #自动重启,保证服务在线 environment: MYSQL_ROOT_PASSWORD: somewordpress #指定环境变量 docker -itd -e MYSQL_ROOT_PASSWORD= somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db # - db 是参数,合起来的意思是只有当上面的mysql数据库安装成功后,这个wordpress才可以 被安装,还有一个功能,就是docker --link 将上面的mysql数据库,与这个wordpress应用连起来 image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {}
-
- docker-compose 有两种方式可以设置 volumes
- 使用具体路径直接挂载到本地,特点就是直观
- 使用卷标的形式,特点就是简洁,但是不知道数据到底挂载在本地的什么位置,需要通过卷标查看
- docker volume ls
- docker volume inspect wordpress_db_data
25.docker compose 简介 和 docker-compose.yml 参数介绍
1. docker compose概念 文档 https://docs.docker.com/compose/compose-file/compose-versioning
一个基于 docker 的工具
可以通过一个 yml 文件定义多容器的 docker 应用
通过一条命令就可以根据 yml 文件的定义 去创建或者管理这多个容器
2 docker compose 版本 2 与 版本 3 的区别
最大的区别
version 2 只能用于单机
version 3 可用于多机
3. docker-compose.yml
Services
一个 service 代表一个 container , 这个 container 可以从 dockerhub 的 image 来创建, 或者从本地的 Dockerfile build出来的image 来创建
service 的启动 类似与 docker run , 我们可以给其指定 network 和 volume . 所以可以给 service 指定 network 和 volume 的引用
eg :
docker run -d --name db -v db-data:/var/liv/postgresql/data --network back-tier postgres:9.4
services:
db: #service 的名称为 db
image: postgres:9.4 #service image 为 postgres:9.4 这是从远程拉取的
volumes:
- "db-data:/var/liv/postgresql/data" #将外部db-data挂载到container 的 /var/liv/postgresql/data 内
networks:
- back-tier #网络为 back-tier
eg2:
docker run -d --link db --link redis --network back-tier worker
services:
worker:
build: ./worker
links:
- db
- redis
networks:
- back-tier #在同一个网络上 不需要links
Volumes:
上面 的
volumes:
- "db-data:/var/liv/postgresql/data" #将外部db-data挂载到container 的 /var/liv/postgresql/data 内
会有单独的一个 volumes (与 services 同级别) 对db-data 进行 阐述
类似于 docker volume create db-data
eg:
volumes:
db-data:
Nerworks:
上面 的
networks:
- back-tier #在同一个网络上 不需要links
会有单独的一个 networks (与 services 同级别) 对back-tier 进行 阐述
类似于 docker nerwork create -d bridge back-tier
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
4编写 docker-compose.yml
# docker compose api 版本
version: ''3''
services:
# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql
wordpress:
#image 为 word press
image: wordpress
#本地 8888 端口 映射 容器 80 端口
ports:
- 8888:80
#wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
#指定连接 的网络 为 my-bridge
networks:
- my-bridge
mysql:
image: mysql:5.7.27
# 数据库 root 的 连接密码 和 所使用的数据库名称
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
# 外部 mysql-data 挂载到 容器内的 /var/lib/mysql
volumes:
- mysql-data:/var/lib/mysql
#指定连接 的网络 为 my-bridge
networks:
- my-bridge
# 定义 volumes
volumes:
mysql-data:
# 定义 networks
networks:
my-bridge:
driver: bridge
Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本
通过 docker-compose 启动容器,报错:
ERROR: The Docker Engine version is less than the minimum required by Compose. Your current project requires a Docker Engine of version 1.10.0 or greater.
升级 Docker 过于麻烦,只能降 docker-compose 的版本。
先看一下我们已经安装的 Docker 版本:
[root@Redmine-186 docker-compose]# docker -v
Docker version 1.7.1, build 786b29d/1.7.1
经查 Docker Compose Github Docs,发现 docker-compose 1.5.2 版本是兼容 Docker 1.7.1 的:Note that Compose 1.5.2 requires Docker 1.7.1 or later.
。
好了,开始降级 docker-compose,先卸载:
# pip uninstall docker-compose
再安装指定版本:
# pip install docker-compose==1.5.2
至此,docker-compose 降版本成功!
docker-compose.yml 版本问题
解决完 docker-compse 版本问题适配之后,对着已有的 docker-compose.yml 执行 “,会提示不能正常识别 docker-compose.yml 文件中的内容。究其原因,是因为我们的 docker-compose 1.5.2 只支持 V1 版本的 docker-compose.yml ,那么好,把现在 V2 版本的 docker-compose.yml 改成 V1 版本的格式。
V1 版本的 docker-compose.yml 只被支持到 docker-compose 1.6.x。再往后的 docker-compose 版本就不再支持 V1 版本的 docker-compose.yml。
先看文档:Compose file versions and upgrading。
V1 版本的 docker-compose.yml 文件格式主要区别就是:
- 没有开头的 version 声明
- 没有 services 声明
- 不支持 depends_on
- 不支持命名的 volumes, networks, build arguments 声明
- 其他我没用到的所以没细究的区别
附录
- How To Install Docker on CentOS 6
- Docker and docker-compose in CentOS 6
- 关于 pip 安装时提示 pkg_resources.DistributionNotFound 错误问题
- CentOS 升级 Python2.7
- ERROR: The Docker Engine version is less than the minimum required by Compose
- Docker Compose Github Docs
- Compose file versions and upgrading
Docker Compose 部署 Nexus3 时的 docker-compose,yml 代码
场景
Docker-Compose 简介与 Ubuntu Server 上安装 Compose:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100902301
Docker Compose 基本使用 - 使用 Compose 启动 Tomcat 为例:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100904080
Docker Compose 部署项目到容器 - 基于 Tomcat 和 mysql 的商城项目 (附源码和 sql 下载):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100941366
在上面实现基本的 Compose 的操作的基础上,实现使用 Docker Compose 搭建 Nexus3。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
version: ''3''
services:
nexus:
restart: always
image: sonatype/nexus3
container_name: nexus3
ports:
- 8081:8081
volumes:
- /usr/local/docker/nexus/nexus-data:/nexus-data
Docker Compose:没有这样的图像 - Docker Compose: No such image
问题:
When I run docker-compose up
, I get this error:当我运行docker-compose up
,出现此错误:
root@ubuntu:/home/benson/Docker/HaproxyMy# docker-compose up
Recreating 950ddc308278_950ddc308278_950ddc308278_950ddc308278_950ddc308278_haproxymy_webb_1
Recreating 485800bdf3a1_485800bdf3a1_485800bdf3a1_485800bdf3a1_485800bdf3a1_haproxymy_webc_1
Recreating 2b3338d88716_2b3338d88716_2b3338d88716_2b3338d88716_2b3338d88716_haproxymy_weba_1
ERROR: for webb No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099
ERROR: for webc No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099
ERROR: for weba No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099
docker-compose.yml
: docker-compose.yml
:
weba:
build: ./web
expose:
- 80
webb:
build: ./web
expose:
- 80
webc:
build: ./web
expose:
- 80
haproxy:
image: haproxy:latest
volumes:
- ./haproxy:/haproxy-override
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
links:
- weba
- webb
- webc
ports:
- "80:80"
- "70:70"
expose:
- "80"
- "70"
解决方案:
参考: https://stackoom.com/en/question/2X9dc今天关于Docker-Compose 快速搭建博客和docker-compose.yml详细分析的介绍到此结束,谢谢您的阅读,有关25.docker compose 简介 和 docker-compose.yml 参数介绍、Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本、Docker Compose 部署 Nexus3 时的 docker-compose,yml 代码、Docker Compose:没有这样的图像 - Docker Compose: No such image等更多相关知识的信息可以在本站进行查询。
本文标签: