太阳能灯网站建设,python做网站的优势,wordpress怎么上传视频教程,WordPress为啥这么慢一、docker-compose 常用命令和指令
1. 概要
默认的模板文件是 docker-compose.yml#xff0c;其中定义的每个服务可以通过 image 指令指定镜像或 build 指令#xff08;需要 Dockerfile#xff09;来自动构建。
注意如果使用 build 指令#xff0c;在 Dockerfile 中设置…一、docker-compose 常用命令和指令
1. 概要
默认的模板文件是 docker-compose.yml其中定义的每个服务可以通过 image 指令指定镜像或 build 指令需要 Dockerfile来自动构建。
注意如果使用 build 指令在 Dockerfile 中设置的选项(例如CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取无需在 docker-compose.yml 中再次设置。如果设置了会被YML覆盖
2. 常用的docker-compose命令
命令描述docker-compose up -d构建建启动容器docker-compose exec bash登录到容器中docker-compose down删除所有容器,镜像docker-compose ps显示所有容器docker-compose restart重新启动容器docker-compose run --no-deps --rm php-fpm php -v在php-fpm中不启动关联容器并容器执行php -v 执行完成后删除容器docker-compose build构建镜像docker-compose build --no-cache不带缓存的构建docker-compose logs查看的日志docker-compose logs -f验证docker-compose.yml文件配置当配置正确时不输出任何内容当文件配置错误输出错误信息docker-compose pause暂停容器docker-compose unpause恢复容器docker-compose rm删除容器删除前必须关闭容器docker-compose stop停止容器docker-compose start启动容器
2.1、image
说明 指定为镜像名称或镜像 ID。如果镜像在本地不存在Compose 将会尝试拉去这个镜像。 栗子 image: ubuntu image: mysql:5.7.22 2.2、build
说明 指定 Dockerfile 所在文件夹的路径。 Compose 将会利用它自动构建这个镜像然后使用这个镜像。 栗子 build: ./ build: ./web/ 2.3、command
说明 覆盖容器启动后默认执行的命令。 栗子 command: --default-authentication-pluginmysql_native_password --character-set-serverutf8mb4 --collation-serverutf8mb4_general_ci --explicit_defaults_for_timestamptrue --lower_case_table_names1 2.4、links
说明 链接到其它服务中的容器。使用服务名称同时作为别名或服务名称服务别名 SERVICE:ALIAS 格式都可以。 栗子 links: - mysql - db:database - redis 使用的别名将会自动在服务容器中的 /etc/hosts 里创建。例如 172.17.2.111 db 172.17.2.112 database 172.17.2.113 redis 2.5、external_links
说明 链接到 docker-compose.yml 外部的容器甚至 并非 Compose 管理的容器。参数格式跟 links 类似。 栗子 external_links: - redis - web_db_mysql:mysql - web_db_oracle:oracle - web_db_oracle:postgre 2.6、ports
说明 暴露端口信息。使用宿主容器 HOST:CONTAINER格式或者仅仅指定容器的端口宿主将会随机选择端口都可以。 栗子 ports: - 6379 - 8000:8000 - 46200:22 - 127.0.0.1:8080:8080 注当使用 HOST:CONTAINER 格式来映射端口时如果你使用的容器端口小于 60 你可能会得到错误得结果因为 YAML 将会解析 xx:yy 这种数字格式为 60 进制。所以建议采用字符串格式。
2.7、expose
说明 暴露端口但不映射到宿主机只被连接的服务访问。可以指定内部端口为参数 栗子 expose: - 3307 - 6380 2.8、volumes
说明 卷挂载路径设置。可以设置宿主机路径 HOST:CONTAINER 或加上访问模式 HOST:CONTAINER:ro 或者rw。 栗子 volumes: - ./mysql/data:/var/lib/mysql - ./configs:/etc/configs/:ro 2.9、volumes_from
说明 从另一个服务或容器挂载它的所有卷。 栗子 volumes_from: - service_name - container_name 2.10、environment
说明 设置环境变量。只给定名称的变量会自动获取它在 Compose 主机上的值可以用来防止泄露不必要的数据。 栗子 environment: MYSQL_ROOT_PASSWORD: root TZ: Asia/Shanghai 2.11、networks
说明 用于设置指定网络,子标签aliases用于设置服务别名相同的别名可以在不同的网络中拥有不同的识别别名。 可以在service中使用,也可以在顶级标签中使用 栗子 services: some-service: networks: some-network: aliases: - alias1 - alias3 other-network: aliases: - alias2 # 定义网络 networks: default: external: name: app 二、Docker Compose-网络设置
一、概述
随着微服务的事件应用的越来越多 经常会碰到需要多个容器共同协作 这样就需要多个容器之间能够互相访问。Docker提供了映射容器端口到宿主机和容器互联机制来为容器提供网络服务。随着 docker 的快速发展其网络架构也在不断的演进。
二、容器网络模型(了解)
Docker在 1.9 版本中引入了一整套的 docker network 子命令和跨主机网络支持。允许用户可以根据他们应用的拓扑架构创建虚拟网络并将容器接入其所对应的网络。网络部分代码就已经被抽离并单独成为了 docker 的网络库(libnetwork)。在此之后容器的网络模式也被抽象变成了统一接口的驱动。 为了标准化网络驱动的开发步骤和支持多种网络驱动docker 公司在 libnetwork 中使用了 CNM(Container Network Model)。CNM 定义了构建容器虚拟化网络的模型同时还提供了可以用于开发多种网络驱动的标准化接口和组件
CNM的理念是提供可以跨不同网络基础架构可实现移植的应用。这个模型平衡了应用的可移植性同时不会损失基础架构原有的各种特性和功能。
CNM主要有三部分组成 沙箱(SandBox)--一个沙箱包含了容器的网络配置。这里包括了容器接口的管理路由表和DNS设定。一个沙箱可以包含多个来自不同网络的端点可以同时连接多个网络。 端点(Endpoint)--沙箱通过端点来连接网络。端点结构的存在使到应用与网络的连接实现虚拟化。这样有助于维护应用的可移值性因此一个服务可以在无须知道如何去连接网络的情况下使用不同类型的网络驱动。 网络(Network)--CNM并不是OSI模型中说的网络层。而是由Linux桥接VLan等来实现。网络收集了所有连接在其上的端点并实现了这些端点的互连。端点如果不连接到其中一个网络那么将无法与外界连接。
CNM驱动接口
容器连网模型提供了两个可拔插且开放的接口供用户使用这些接口是用于通讯利用供应商提供的附加功能网络可见性或网络控制等方面。目前存在以下网络驱动 网络驱动(Network Drivers)--Docker网络驱动提供了使网络可以工作的具体实现。他们是可拔插的所以很易于支持不同的用户使用场景。多个网络驱动可同时用于指定的Docker引擎和群集。有以下两个广泛使用的CNM网络驱动 内置网络驱动(Native Network Drivers)--内置网络驱动是内置于Docker引擎并随Docker提供的驱动。有多个驱动可供选择以支持不同的功能如overlay网络和local bridge网络。 远程网络驱动(Remote Network Drivers)--远程网络驱动是由社区或其它供应商建立的网络驱动。这些驱动可用于与现有的软件或硬件环境进行集成。用户也可以建立自己的网络驱动以达成各种特殊需求。 IPAMIP地址管理驱动--Docker有一个内置的IP地址管理驱动在没有特别指定IP的情况下它会为网络和端点提供了默认的子网或IP地址。IP地址通过网络(docker network create)容器(docker container create)和服务(docker service create)创建指令来人工分配。远程IPAM驱动也存在和提供了集成到现有IPAM的工具。
Docker内置网络驱动
Docker内置网络驱动是Docker引擎的一部份不需要任何额外模块。他们可以被docker network命令所调用。以下是现存的内置网络驱动
驱动描述Host没有命名空间隔离主机上的所有接口都可以直接被容器使用。Bridge受Docker管理的Linux桥接网络。默认在同一个bridge网络的容器都可以相互通迅。 容器的外部访问也可以使用bridge驱动来设置。Overlay提供多主机的容器网络互连。同时使用了本地Linux桥接网络和VXLAN技术实现容器之间跨物理网络架构的连接。MACVLAN使用MACVLAN桥接模式建立容器接口和主机接口之间的连接。实现为容器提供在物理网络中可路由的IP地址。 此外VLAN可以被中继至macvlan驱动以强制实现容器的2层分段。None容器具有属于自己的网络栈和网络命名空间但并在容器内添加网络接口。如没有其它的设置则容器将完全独立于其它网络。
参考文章
https://success.docker.com/article/networking
Docker网络体系结构设计可扩展、可移植的Docker容器网络-CSDN博客
三、Docker Compose-网络设置二
一、概述
默认情况下Compose 会为我们的应用创建一个网络服务的每个容器都会加入该网络中。这样容器就可被该网络中的其他容器访问不仅如此该容器还能以服务名称作为 Hostname 被其他容器访问。
默认情况下应用程序的网络名称基于 Compose 的工程名称而项目名称基于 docker-compose.yml 所在目录的名称。如需修改工程名称可使用 --project-name 标识或 COMPOSE_PORJECT_NAME 环境变量。
假如一个应用程序在名为 myapp 的目录中并且 docker-compose.yml 如下所示 version: 3 services: web: build: . ports: - 8000:8000 db: image: mysql 当我们运行 docker-compose up 时将会执行以下几步 创建一个名为 myapp_default 的网络 使用 web 服务的配置创建容器它以 web 这个名称加入网络 myapp_default 使用 db 服务的配置创建容器它以 db 这个名称加入网络 myapp_default
容器间可使用服务名称web 或 db作为 Hostname 相互访问。例如web 这个服务可使用 postgres://db:5432 访问 db 容器。
当服务的配置发生更改时可使用 docker-compose up 命令更新配置。此时Compose 会删除旧容器并创建新容器。新容器会以不同的 IP 地址加入网络名称保持不变。任何指向旧容器的连接都会被关闭容器会重新找到新容器并连接上去。
二、使用 links
默认情况下服务之间可使用服务名称相互访问。links 允许我们定义一个别名从而使用该别名访问其他服务。 version: 2 services: web: build: . links: - db:database db: image: postgres 三、自定义网络
一些场景下默认的网络配置满足不了我们的需求此时我们可使用 networks 命令自定义网络。networks 命令允许我们创建更加复杂的网络拓扑并指定自定义网络驱动和选项。不仅如此我们还可使用 networks 将服务连接到不是由 Compose 管理的、外部创建的网络。
version: 3
services:proxy:build: nginxnetworks:- frontapp:build: ./appnetworks:- front- backdb:image: postgresnetworks:- backnetworks:front:# Use a custom driverdriver: custom-driver-1back:# Use a custom driver which takes special optionsdriver: custom-driver-2driver_opts:foo: 1bar: 2
其中proxy 服务与 db 服务隔离两者分别使用自己的网络app 服务可与两者通信。使用 networks 命令即可方便实现服务间的网络隔离与连接。
四、配置默认网络
version: 3
services:web:build: .ports:- 8000:8000db:image: postgresnetworks:default:driver: custom-driver-1 这样就可为该应用指定自定义的网络驱动。
五、已存在的网络
我们可以预先创建一个名为 myapp 的网络让 Compose 加入这个新创建的网络使所有 Compose 可以通信此时使用 external 选项。 # 创建网络 docker network create Network Name # 查看已存在的网络 docker network list networks: default: external: name: web 四、Docker 可视化
一、Docker常见的几款web工具 portainer(常用) docker UI shipyard
二、什么是Portainer
Portainer是Docker的图形化管理工具提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作包括上传下载镜像创建容器等操作、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面基本能满足中小型单位对容器管理的全部需求
三、安装
下载镜像 docker pull portainer/portainer-ce 运行Portainer(单机版) docker run -d \ -p 9000:9000 \ -v /var/run/docker.sock:/var/run/docker.sock \ portainer/portainer-ce 访问 http://localhost:9000/ 设置管理员密码