Docker容器管理工具
Docker Machine
Docker Compose
Docker Swarm
Docker Machine介绍
应用软件的部署,主要分为部署在用户环境的主机上、部署在云端、那么部署在云端的又可以根据访问的范围分为公有云,私有云如何在以上环境当中创建docker主机,变成了使用者关注的一个问题;那么Docker Machine的产生就是简化这一过程
Docker Machine是一个从零到docker的工具
可以在个人电脑,公有云平台和私有云数据中心部署Docker主机
Docker Machine提供了集中管理Docker的功能
与Docker Swarm集成创建Docker集群
Docker Machine的出现简化了部署的复杂度,无论在本机的虚拟机上还是公有云平台,只需要一条命令就可以搭建好Docker主机,还有呢,同时Docker主机从本地迁移到云端变得非常简单,只需要修改一下环境变量,可以和任意的Docker主机进行通讯
以下实验是在一台vmware虚拟机上做的操作,需要打开cpu的虚拟化支持。
还需要把内核升级到最新版本,为了不出现问题,我是直接升级了系统所有rpm包。 # yum update 重启后,然后安装内核相关库。 # yum install -y kernel-devel 配置virtualbox的yum仓库 # cd /etc/yum.repos.d # wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo 然后安装virtualbox,要想使用docker-machine需要安装virtualbox # yum install -y VirtualBox-5.2 配置virtualbox: # vboxconfig
-
安装Docker Machine
[root@linux-node1 ~]# curl -L https://github.com/docker/machine/releases/download/v0.4.0/docker-machine_linux-amd64 > /usr/local/bin/docker-machine
[root@linux-node1 ~]# chmod +x /usr/local/bin/docker-machine
[root@linux-node1 ~]# docker-machine -v
docker-machine version 0.4.0 (9d0dc7a)
-
Docker Machine命令集
create/rm – 创建/删除一个Docker machine
[root@linux-node1 ~]# docker-machine create -d virtualbox test ###命令集 start/stop/restart/kill – 起停Docker machine active/config/env/inspect/ip/status/url – 获取Docker machine信息 ssh – 远程登录Docker machine scp – 本机与Docker machine或Docker machine之间传输文件
-
远程创建Docker容器
~]# docker-machine env test ~]# eval "$(docker-machine env test)" ~]# docker run -d -t ubuntu bash ~]# docker ps
Docker Machine工作原理
- 多操作系统支持(Mac/Windows)
- 多发行版支持
- 更加完善的Docker Engine/Docker Swarm配置
Docker Compose介绍
- 定义和运行多个Docker容器的工具
- 一个文件 – docker-compose.yml
- 一条命令 – docker-compose up
安装Docker Compose
[root@linux-node1 ~]# curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-`uname -s`-`uname -m` >/usr/local/bin/docker-compose
[root@linux-node1 ~]# chmod +x /usr/local/bin/docker-compose
[root@linux-node1 ~]# docker-compose -v
docker-compose version: 1.4.0
docker-compose.yml解析
- 镜像
image: ubuntu:latest build: /path/to/build/dir dockerfile: 使用指定的Dockerfile command: 覆盖默认命令
- 容器配置
links: - db:database ##第一项服务名称,第二项别名 external_links: ##本工程之外的或者不是compose组成的容器,典型的是一个公用的docker容器 - project_redis_1 ports: - "3000" - "8000:80" expose: ##用于关联容器,声明本docker容器监听在3000端口上,那么他会于环境变量的形式导入到它关联的容器中 - "3000" volumes: - /var/lib/mysql:/var/lib/mysql environment: - MYSQL_USER=mysql
Docker Compose实例
[root@linux-node1 ~]# vim docker-compose.yml web: build: . ports: - "5000:5000" volumes: - .:/code links: - redis redis: image: redis [root@linux-node1 ~]# cat Dockerfile FROM python:2.7 WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code CMD python app.py
Docker Compose命令集
- 管理镜像 – build/pull
- 管理服务 – up/start/stop/kill/rm/scale ##scale动态扩展docker容器中启动的数量
- 服务状态 – ps/logs/port
- 一次性命令 – run
Docker Compose工作原理
- 工程(project)/服务(service)/容器(container)
- 调用docker-py库与远程Docker Daemon/Swarm API Server通信
- 按依赖性排序/调度
Docker Swarm介绍
- Docker集群管理工具
- 多个Docker主机抽象成一个单一的虚拟主机
- 支持标准Docker API
安装Docker Swarm
[root@linux-node1 ~]# docker pull swarm ##创建集群token [root@linux-node1 ~]# docker run swarm create ##swarm create - 从Docker Hub发现服务申请一个唯一标识此集群的token 89b661e6a58cc5c3c7008c19e5a3caa1 ##创建swarm master节点 [root@linux-node1 ~]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H 0.0.0.0:2375 -H unix:///var/run/docker.sock --label label_name=docker1 :wq 保存退出 ~]# systemctl daemon-reload ~]# systemctl restart docker ~]# systemctl status docker.service [root@linux-node1 ~]# docker run -d -p 2376:2375 swarm manage token://89b661e6a58cc5c3c7008c19e5a3caa1 b2ca2c0b41695877a2605c64b0a7583478a05a3970a758183f43859d4d613e1c ##创建swarm node节点 [root@linux-node2 ~]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --insecure-registry 118.190.201.11:5001 -H 0.0.0.0:2375 -H unix:///var/run/docker.sock --label label_name=docker2 :wq 保存退出 ~]# systemctl daemon-reload ~]# systemctl restart docker ~]# systemctl status docker.service ##加入swarm节点 [root@linux-node2 ~]# docker run -d swarm join --addr=118.190.201.12:2375 token://89b661e6a58cc5c3c7008c19e5a3caa1 ##查看是否创建完成 [root@linux-node1 ~]# docker -H 118.190.201.11:2376 info
创建容器加入swarm管理
##swarm调度 [root@linux-node1 ~]# docker -H 118.190.201.11:2376 run -it --name busybox -e constraint:label_name==docker2 busybox / #
如无特殊说明,文章均为本站原创,转载请注明出处
- 转载请注明来源:Docker容器管理工具
- 本文永久链接地址:https://www.xionghaier.cn/archives/971.html