Docker容器管理工具

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
/ #

 

0
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到