云计算学习100天-第74天-容器docker3
它通过将应用程序拆分为多个小型、自治的服务,并将每个服务部署在独立的容器中,实现了更高效的资源利用和更灵活的部署方式。使用compose可以在一个文件中配置多个容器服务,然后使用一个简单的命令就可以轻松、高效地管理配置中引用的所有容器服务。项目project——由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yaml文件中定义。docker run --network=
目录
对外发布服务
概念
实现容器端口与宿主机的端口进行映射绑定
从而把宿主机变成对应的服务,不用关心容器的IP地址
每个端口都只能和一个容器绑定
绑定后,直接访问宿主机的 IP 地址即可
端口映射语法:
docker run -p [可选IP]:宿主机端口:容器端口(可多个) 镜像:标签
容器卷
作用
给容器保存数据
修改多个容器中的数据
多容器之间数据共享和同步
频繁更改数据文件与配置文件
docker可以映射宿主机文件目录到容器中,目标对象不存在就创建,存在就覆盖。
多个容器可以映射同一个目标
命令:
启动容器时,使用-v 映射参数(可有多个)
docker run -itd -v 宿主机对象:容器内对象 镜像名称:标签
容器网络通信
docker的网络通信模式:
bridge 默认模式
host 与宿主机共享网络
none 无网络模式
container 共享其他容器的网络命名空间
自定义网络 自由创建桥接网络或overlay网络
命令:
使用网络名称空间共享网络
docker run --network=container:容器名称|ID 镜像名称:标签
示例:
docker run -itd --rm --name php --network=container:web \
-v /var/webroot:/usr/local/nginx/html myos:php-fpm
#--rm 容器停止后自动删除其文件系统,避免残留无用容器
微服务管理
概念
容器化微服务架构是将微服务架构与容器技术相结合的一种现代软件架构模式。它通过将应用程序拆分为多个小型、自治的服务,并将每个服务部署在独立的容器中,实现了更高效的资源利用和更灵活的部署方式
优点:
松耦合高内聚、高度可扩展、出色的弹性、易于部署、访问
docker Compose工具
概念
一个用于定义和运行多容器的应用的工具
使用compose可以在一个文件中配置多个容器服务,然后使用一个简单的命令就可以轻松、高效地管理配置中引用的所有容器服务。
compose项目是Docker官方的开源项目,负责实现容器集群的快速编排
compose项目核心:
服务service——一个应用的容器
项目project——由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yaml文件中定义
命令:
创建项目服务文件
vim docker-compose.yaml
name: myweb #项目名称
version: "3" #语法格式版本
services: #关键字,定义服务
websvc: #服务名称
container_name: nginx
image: myos:nginx
compose项目管理命令
docker compose [-f yaml文件名 | -p 项目名] 指令
指令 说明
up 创建项目并启动容器
is 列出可以管理的项目
images 列出项目使用的镜像
ps 显示项目中容器的状态
logs 查看下项目中容器的日志
start/stop/restart 启动项目/停止项目/重启项目
down 删除项目容器及网络
示例:docker compose -f docker-compose.yaml up -d
项目服务文件docker-compose.yaml的参数
container_name 指定容器名称
image 指定为镜像名称或镜像 ID
ports 暴露端口信息
volumes 数据卷,支持 [volume、bind、tmpfs、npipe]
network_mode 设置网络模式
environment 设置环境变量
restart 容器保护策略[always、no、on-failure]
command 覆盖容器启动后默认执行的命令
healthcheck 配置服务健康检测
depends_on 服务依赖关系 services_[started、healthy、completed_successfully]
容器服务编排示例
vim docker-compose.yaml
name: myweb
version: "3"
services:
websvc:
container_name: nginx
image: myos:nginx
ports:
- 80:80
environment:
- "TZ=Asia/Shanghai"
volumes:
- type: bind
source: /root/conf/nginx.conf
target: /usr/local/nginx/conf/nginx.conf
- type: bind
source: /var/webroot
target: /usr/local/nginx/html
phpsvc:
container_name: php
image: myos:php-fpm
restart: always
network_mode: "service:websvc"
volumes:
- type: bind
source: /var/webroot #宿主机路径
target: /usr/local/nginx/html #容器路径
更多推荐
所有评论(0)