在这篇文章中,我们将为您详细介绍起飞的感觉,docker-compose的内容,并且讨论关于起飞的感觉怎么形容的相关问题。此外,我们还会涉及一些关于10.docker学习笔记之入门,docker-co
在这篇文章中,我们将为您详细介绍起飞的感觉,docker-compose的内容,并且讨论关于起飞的感觉怎么形容的相关问题。此外,我们还会涉及一些关于10.docker学习笔记之入门,docker-compose端口映射可能会导致的问题、25.docker compose 简介 和 docker-compose.yml 参数介绍、7.docker 学习笔记之入门,docker compose 简单配置、centos7.6 下安装docker,docker compose的知识,以帮助您更全面地了解这个主题。
本文目录一览:- 起飞的感觉,docker-compose(起飞的感觉怎么形容)
- 10.docker学习笔记之入门,docker-compose端口映射可能会导致的问题
- 25.docker compose 简介 和 docker-compose.yml 参数介绍
- 7.docker 学习笔记之入门,docker compose 简单配置
- centos7.6 下安装docker,docker compose
起飞的感觉,docker-compose(起飞的感觉怎么形容)
docker-compose 是什么?
docker-compose 是用来定义和运行多容器 Docker 应用程序的工具。
准备阶段
已经安装 docker 和 docker-compose。
已经制作了 web1 和 web2 镜像并推送到远程仓库。
编写 docker-compose 文件,并进行服务编排
1. image:就是你的 docker 镜像
2. depends_on:代表 web2 本身依赖于 web1,所以 web1 的启动要先于 web2 服务
3. volumes:可以对应 docker 操作中的 -v home/path/:/docker/path
version: ''1''
services:
web1:
image: docker.shj.com/shj/web1:v1
ports:
- "8088:8080"
volumes:
- /home/logs/:/usr/local/tomcat/logs/
- /home/logs/:/home/logs/
web2:
image: docker.shj.com/shj/web2:v1
depends_on:
- web1
volumes:
- /home/logs/:/usr/local/tomcat/logs/
- /home/logs/:/home/logs/
ports:
- "8089:8080"
mysql:
environment:
MYSQL_ROOT_PASSWORD: "shj@123"
MYSQL_USER: "root"
MYSQL_PASS: "shj@123"
image: docker.shj.com/ops/mysql:5.7
ports:
- "33306:3306"
nginx:
image: docker.shj.com/ops/nginx:v1
volumes:
- /home/logs/nginx/:/home/logs/nginx/
- /home/shj/nginx/nginx_ssl/:/home/nginx/nginx/conf/cert/ssl/
- /home/shj/nginx/nginx_conf/:/usr/local/nginx/conf/http_vhost/
- /home/shj/web/web2/:/home/shj/apps/web/web2/
- /home/shj/web/web1/:/home/shj/apps/web/web1/
ports:
- "80:80"
总结
docker-compose 适合于需要多个容器相互配合来完成服务的运行,当我们在工作中遇到一个项目运行,需要多个服务配合甚至数据库、负载均衡等这个时候我们可以考虑使用 Compose 编排管理,提高部署效率。
推荐阅读
如何使用 docker?
关注【被讨厌的勇气】
本文分享自微信公众号 - 云原生技术爱好者社区(programmer_java)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。
10.docker学习笔记之入门,docker-compose端口映射可能会导致的问题
docker run的时候如果用上了-p或者docker-compose up -d 的时候用了ports:,那么就存在端口映射,在配置主从的时候,监听公网的其他端口如:
这个时候需要配置从节点真实公网映射的地址和端口
# slave-announce-ip 5.5.5.5 # slave-announce-port 1234
哨兵真实公网映射地址和端口
# sentinel announce-ip <ip> # sentinel announce-port <port>
集群真实公网映射地址和端口
# cluster-announce-ip <ip> #地址 # cluster-announce-port <port> #数据端口 # cluster-announce-bus-port <port> #节点通信端口
可以配合sh脚本和docker-compose 来达到动态修改的效果
docker-compose.yaml
version: "3.6" #设置网络环境 networks: #引用外部预先定义好的网段 redis-network: external: name: redis-network services: sentinel-1: image: redis container_name: sentinel-1 ports: - "26386:26379" networks: redis-network: ipv4_address: 192.168.1.14 volumes: - "/usr/docker/08/sentinel-1:/usr/src/redis" environment: #环境变量 - REALIP=XXX.XXX.XXX.XXX - REALPORT=26386 command: ["redis-sentinel","/usr/src/redis/conf/sentinel.conf"] entrypoint: #执行 - /bin/sh - /usr/src/sh/redis.sh privileged: true #特殊权限 working_dir: /usr/src/redis #工作目录 stdin_open: true #打开标准输入 tty: true #模拟伪终端
redis.sh
echo " slave-announce-ip $REALIP
slave-announce-port $REALPORT " >> /usr/src/redis/conf/redis.conf
redis-server /usr/src/redis/conf/redis.conf
生成redis docker的Dockerfile
FROM alpine
RUN sed -i ''s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g'' /etc/apk/repositories \
&& apk add gcc g++ libc-dev wget vim openssl-dev make linux-headers \
&& rm -rf /var/cache/apk/*
#通过选择更小的镜像,删除不必要文件清理不必要的安装缓存,从而瘦身镜像
#创建相关目录能够看到日志信息跟数据跟配置文件
RUN mkdir -p /usr/src/redis \
&& mkdir -p /usr/src/redis/data \
&& mkdir -p /usr/src/redis/conf \
&& mkdir -p /usr/src/sh \
&& mkdir -p /usr/src/redis/log \
&& mkdir -p /var/log/redis
RUN wget -O /usr/src/redis/redis-4.0.11.tar.gz "http://download.redis.io/releases/redis-4.0.11.tar.gz" \
&& tar -xzf /usr/src/redis/redis-4.0.11.tar.gz -C /usr/src/redis \
&& rm -rf /usr/src/redis/redis-4.0.11.tar.tgz
RUN cd /usr/src/redis/redis-4.0.11 && make && make PREFIX=/usr/local/redis install \
&& ln -s /usr/local/redis/bin/* /usr/local/bin/ && rm -rf /usr/src/redis/redis-4.0.11
COPY ./redis/sh/redis.sh /usr/src/sh
RUN chmod +x /usr/src/sh/redis.sh
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
7.docker 学习笔记之入门,docker compose 简单配置
version: "3.6" #设置网络环境 networks: #自定义网络 nginx-network: ipam: driver: bridge config: - subnet: "172.16.238.0/24" #引用外部预先定义好的网段 redis-network: external: name: redis-network services: nginx: image: nginx container_name: nginx-compose environment: #设置环境变量 password: "123456" ports: - "8003:80" networks: redis-network: ipv4_address: 192.168.1.5 volumes: - "/usr/docker/compose/nginx/conf:/conf" command: ["/usr/local/nginx/sbin/nginx","-c","/conf/nginx.conf","-g","daemon off;"] privileged: true #特殊权限 working_dir: /conf #工作目录 stdin_open: true #打开标准输入 tty: true #模拟伪终端 nginx1: build: context: ./nginx dockerfile: Dockerfile args: buildno: 1 container_name: nginx-compose2 ports: - "8002:80" networks: redis-network: ipv4_address: 192.168.1.6 volumes: - "/usr/docker/compose/nginx/conf:/conf" command: ["/usr/local/nginx/sbin/nginx","-c","/conf/nginx.conf","-g","daemon off;"]
docker-compose up -d #最简单的执行命令,如果没报错的话 docker images;docker ps -a 就会有对应的镜像和容器
docker-compose -p testname1 up -d #给上命名
centos7.6 下安装docker,docker compose
一、安装docker
1、升级所有包(这步版本够用不要随便进行,会更新系统内核,可能导致开不了机)
#yum update //升级所有包,同时升级软件和系统内核
(#yum upgrade //升级所有包,不升级软件和系统内核)
2、安装依赖包
#yum install -y yum-utils device-mapper-persistent-data lvm2
3、添加aliyun docker软件包源
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、添加软件包源到本地缓存
#yum makecache fast
#rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
5、安装docker
#yum -y install docker-ce
6、设置开机启动docker
#systemctl enable docker
7、重启docker
#systemctl restart docker
=============================================================
添加国内源:修改或新增 /etc/docker/daemon.json
# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"]
}
Docker 官方中国区:https://registry.docker-cn.com
网易:http://hub-mirror.c.163.com
中国科技大学:https://docker.mirrors.ustc.edu.cn
阿里云:https://pee6w651.mirror.aliyuncs.com
#systemctl restart docker.service
二、安装docker-compose
Docker Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。Docker Compose 中的两个重要概念:
服务 (service):一个应用容器,实际上可以运行多个相同镜像的实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元。
一个项目可以由多个服务关联(容器)而成,并使用docker-compose.yml进行管理。
1、检查linux有没有安装python-pip包
#yum install python-pip -y
2、没有python-pip包就执行命令
#yum -y install epel-release
3、执行成功之后,再次执行
#yum install python-pip
4、对安装好的pip进行升级
#pip install --upgrade pip
5、安装docker-compose
#pip install docker-compose
6、检查docker安装
#docker-compose -version
关于起飞的感觉,docker-compose和起飞的感觉怎么形容的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于10.docker学习笔记之入门,docker-compose端口映射可能会导致的问题、25.docker compose 简介 和 docker-compose.yml 参数介绍、7.docker 学习笔记之入门,docker compose 简单配置、centos7.6 下安装docker,docker compose的相关信息,请在本站寻找。
本文标签: