美文网首页
Docker 体验及总结(1) - 开发环境部署

Docker 体验及总结(1) - 开发环境部署

作者: 千反田爱瑠爱好者 | 来源:发表于2018-08-22 11:12 被阅读6次
https://www.docker.com/

项目部署方式对比

传统部署:

  • 部署非常慢;
  • 成本非常高;
  • 资源浪费;
  • 难于迁移和扩展;
  • 可能会被限定硬件厂商。

虚拟化部署

  • 资源池:实现物理资源层面的隔离,物理机资源分配到不同虚拟机,可部署多个应用;
  • 容易扩展:增加物理机/增加虚拟机;
  • 容易云化:亚马逊AWS、阿里云;
  • 完整的操作系统,消耗资源较多。

容器部署

  • 对软件及其依赖标准化打包,应用之间相互隔离、共享一个OS Kernel,可以运行在多种操作系统上;
  • 由于只实现应用层面上的隔离,消耗资源较少。

安装

直接安装(默认Centos环境,否则建议Vargrant + VirtualBox搭建虚拟环境)

yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2 epel-release
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum clean all
yum update
yum makecache
yum install docker-ce       # CentOS 6: yum -y install docker-io

systemctl start docker
docker run hello-world

Docker Machine:创建运行Docker的VM环境

docker-machine version

docker-machine create demo
docker-machine ls

docker-machine ssh demo

通过本地命令管理Docker Machine

docker-machine env demo
    eval $(docker-machine env demo)
docker version

架构

Client - Docker Host - Registry

  • Docker提供了一个开发,打包,运行app的平台
  • Docker引擎(后台进程 + REST API Server + CLI接口)把app与底层infrastructure隔离开来

底层技术支持:

  • Namespaces:隔离pid,net,ipc,mnt,uts
  • Control groups:做资源限制
  • Union file systems:Container和image的分层

Vagrant + VirtualBox部署虚拟化开发环境

VirtualBox

yum install -y tigervnc* VirtualBox-5.2
service vboxdrv setup

Vagrant

# Vagrant Cloud: https://app.vagrantup.com/boxes/search
wget https://releases.hashicorp.com/vagrant/2.1.2/vagrant_2.1.2_x86_64.rpm
rpm -ivh ...

mkdir Master && cd Master
vagrant init centos/7       # 创建虚拟机(如果没有对应镜像会自动下载)
vagrant up                  # 如要使用VMWare可指定--provider=vmware_fusion
vagrant ssh

其他常用命令:

vagrant init                # 初始化
vagrant up                  # 启动
vagrant halt                # 关闭
vagrant reload              # 重启
vagrant ssh                 # 连接
vagrant status              # 查看运行状态
vagrant destroy             # 销毁

Vagrant &Docker

创建四台CentOS,三台Slave,一台Master

mkdir Master Slave1 Slave2 Slave3
cd Master && vagrant init centos/7 && vagrant up
cd Slave1 && vagrant init centos/7 && vagrant up
cd Slave2 && vagrant init centos/7 && vagrant up
cd Slave3 && vagrant init centos/7 && vagrant up

更推荐通过Vagrantfile创建,自动安装依赖(以Master为例):

vim Vagrantfile
    Vagrant.configure("2") do |config|
      config.vm.box = "centos/7"
      config.vm.network "private_network", ip: "10.0.3.110"
      config.vm.provision "shell", inline: <<-SHELL
        sudo su
        service network restart
        
        yum -y install net-tools vim wget
        
        yum install -y yum-utils \
            device-mapper-persistent-data \
            lvm2
        yum-config-manager \
            --add-repo \
            https://download.docker.com/linux/centos/docker-ce.repo
        yum install -y docker-ce
        systemctl start docker
        
        echo "10.0.3.110 Master" >> /etc/hosts
        echo "10.0.3.111 Slave1" >> /etc/hosts
        echo "10.0.3.112 Slave2" >> /etc/hosts
        
        echo "Master" > /etc/hostname
        hostname Master
        
        wget http://apache.mirrors.pair.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz \
            -O /usr/local/src/zookeeper-3.4.13.tar.gz
        tar -zxf /usr/local/src/zookeeper-3.4.13.tar.gz
      SHELL
    end
vagrant reload      # 修改Vagrantfile后需要重新加载
vagrant ssh
    ifconfig
    sudo docker run hello-world

创建好一台虚拟机,把Vagrantfile复制一份、修改ip地址和域名,在指定目录下执行vagrant up即可创建其他相同环境的虚拟机,非常方便。

配置好开发环境、退出并关闭后可以对环境打包:

vagrant package             # 生成一个package.box文件,只要添加这个box 并用其初始化自己的目录就能得到相同的开发环境

一些资料

相关文章

网友评论

      本文标题:Docker 体验及总结(1) - 开发环境部署

      本文链接:https://www.haomeiwen.com/subject/ajmeiftx.html