zoukankan      html  css  js  c++  java
  • Docker 环境的各种搭建方法 (系统学习Docker02)

    写在前面

    工欲善其事必先利其器
    看官网:https://docs.docker.com/install/

    Dcoker 在MAC Windows10 CentOS VartualBox Vagrant 之间能够擦出什么样的火花呢?

    2.1 Docker for Mac :

    https://docs.docker.com/docker-for-mac/install/
    MAC 安装之后包含:
    The Docker Desktop installation includes
    Docker Engine,
    Docker CLI client,
    Docker Compose,
    Notary,
    Kubernetes,
    and Credential Helper.

    2.2 Docker for Windows10 :(直接安装并不推荐)

    https://docs.docker.com/docker-for-windows/install/

    √ 2.3 VartualBox + Vagrant(创建虚拟机) for mac 【mac or windows 都推荐这种模式】

    VartualBox ,官网下载安装

    Vagrant(创建虚拟机不用自己去找镜像什么的),官网下载安装.
    这是下载地址 https://www.vagrantup.com/downloads.html 选择自己对应的版本。
    安装成功后:

    ➜  ~ vagrant --version
    Vagrant 2.2.7
    ➜  ~ 
    
    

    创建一台centos7的虚拟机

    ➜  myimages mkdir centos7
    ➜  myimages cd centos7 
    ➜  centos7 vagrant init centos/7
    A `Vagrantfile` has been placed in this directory. You are now
    ready to `vagrant up` your first virtual environment! Please read
    the comments in the Vagrantfile as well as documentation on
    `vagrantup.com` for more information on using Vagrant.
    ➜  centos7 ll
    total 8
    -rw-r--r--  1 liuge36  staff   2.9K Feb 14 18:46 Vagrantfile
    ➜  centos7 
    生成的这个文件描述了我们要去创建一个怎么样的VirtualMachine
    
    
    ➜  centos7 vagrant up          
    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Importing base box 'centos7'...
    ....
    ==> default: Mounting shared folders...
        default: /vagrant => /Users/liuge36/myimages/centos7
    ➜  centos7 
    
    生成成功~
    vagrant status
    运行vagrant ssh 进入
    
    停止下来使用:vagrant halt
    vagrant status
    
    删除使用:vagrant destroy 
    
    你要是想找自己想要的OS,可以到 vagrant Cloud 这个网站去找现成,类似于Docker Hub
    
    https://app.vagrantup.com/boxes/search
    一个 vagrantfile 可以创建多台主机
    
    

    我这里贴出我的 Vagrantfile

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.configure("2") do |config|
      config.vm.box = "centos7"
      config.vm.hostname = "hadoop001"
      config.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
    
      config.vm.provider "virtualbox" do |v|
        v.gui = false       
        v.name = "hadoop001"     
        v.cpus = 2            
        v.memory = "2048"    
      end
    
    
    end
    

    ps:关于上面这个文件有两个点说明一下:
    1.要是没有科学上网,直接拉取config.vm.box 中定义的centos7 真的是巨慢。可以先通过其他方式下载到本地,再add到本地,避免远程拉取。

    
    # 01 下载centos7 box:
    https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
    # 02 add 进去
    vagrant box add centos7  centos-7.0-x86_64.box
    

    2.关于Vagrantfile中网络的配置,好像默认是静态地址转换NAT网络模式,这种个人不是很喜欢用,我喜欢桥接模式。所以,上面的file中我新增一张桥接网络网卡。关于网络说明可以参考:http://www.360doc.com/content/18/0627/17/32123204_765866462.shtml

      config.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
    
    

    再来一个三节点的Vagrantfile

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.configure("2") do |config|
      config.vm.box = "centos7"
    
    
      config.vm.define "hadoop001" do |hadoop001|
         hadoop001.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
         hadoop001.vm.hostname = "hadoop001"
         hadoop001.vm.provider "virtualbox" do |v|
           v.gui = false
           v.name = "hadoop001"
           v.cpus = 2
           v.memory = "2048"
         end
      end
    
      config.vm.define "hadoop002" do |hadoop002|
         hadoop002.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
         hadoop002.vm.hostname = "hadoop002"
         hadoop002.vm.provider "virtualbox" do |v|
           v.gui = false
           v.name = "hadoop002"
           v.cpus = 2
           v.memory = "2048"
         end
      end  
    
    
      config.vm.define "hadoop003" do |hadoop003|
         hadoop003.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
         hadoop003.vm.hostname = "hadoop003"
         hadoop003.vm.provider "virtualbox" do |v|
           v.gui = false
           v.name = "hadoop003"
           v.cpus = 2
           v.memory = "2048"
         end
      end  
    
    end
    

    2.4 VartualBox + Vagrant(创建虚拟机) for windows

    VartualBox ,官网下载安装 对应的windows版本;
    Vagrant 对应的windows版本,下载,点击下一步下一步即可。

    2.5 Docker for CentOS 【推荐这么玩法】

    https://docs.docker.com/install/linux/docker-ce/centos/

    使用 vagrant 启动一台CentOS7的机器,
    vagrant ssh 进入到机器

    1. 先卸载之前的版本:
      sudo yum remove docker
      docker-client
      docker-client-latest
      docker-common
      docker-latest
      docker-latest-logrotate
      docker-logrotate
      docker-engine

    2.安装几个依赖
    sudo yum install -y yum-utils
    device-mapper-persistent-data
    lvm2

    1. 添加镜像源
      sudo yum-config-manager
      –add-repo
      https://download.docker.com/linux/centos/docker-ce.repo

    2. sudo yum install docker-ce

    3. sudo systemctl start docker
      sudo docker version

    4. sudo docker run hello-world

    √ √ √ √ √ Vagrantfile 高级玩法:√ √ √ √ √ √ √

    标题:构建自动化的初始容器
    在文件最后,可以添加一些自动运行的命令:
    比如,可以将安装docker的命令封装进去,
    到时候,直接 vagrant up ,就可以起来一台带上docekr环境的centos
    答案:
    config.vm.provision “shell”, inline: <<- SHELL
    sudo yum remove docker docker-common docker-selinux docker-engine
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager -y --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce
    sudo systemctl start docker
    sudo docker version
    sudo echo “恭喜您,安装Docker完成~”
    SHELL

    2.6 Docker Machine

    https://docs.docker.com/v17.09/machine/overview/

    docker for mac/windows10 已经自带了docker-machine;
    docker for linux 也可以自己安装 docker-machine;

    安装参考:https://docs.docker.com/machine/install-machine/

    安装好之后:
    可以直接使用docker-machine create demo 来创建一台带Docker的小虚拟机 ;

    到VirtualBox 中就可以看见创建的虚拟机demo。

    docker-machine ls
    docker-machine create demo // 在本地创建一个带docker的小虚机
    docker-machine ssh demo // 进入这个带docker软件的小虚拟机
    docker-machine stop demo // 停止容器
    docker-machine rm demo // 删除容器

    √ √ √ √ √ √ √ docekr-machine 高级玩法 √ √ √ √ √ √ √

    标题:外部对内部小虚机的Docker进行管理

    本地有一个docker server ,
    使用本地的docker-machine 创建了一个带docker server的小虚机,
    关闭本地的docker server,之后
    docker version // 无server可连接
    docker-machine env demo,得到小虚机的环境变量
    eval $(docker-machine env demo) // 执行环境变量
    docker version // 这个时候连接的就是小虚机的server

    后面的都是在外部 对 内部小虚机的docker 进行管理操作了。

    这样其实在本地只是需要安装一个docker cli 即可,

    目的:直接在本地运行docekr-machine create 在远程cloud 云主机上
    创建一台安装好docker的小虚机,

    2.7 如何在阿里云主机上创建一台带docker 软件的小虚机

    https://docs.docker.com/machine/get-started-cloud/

    2.8 如何在AWS云主机上创建一台带docker 软件的小虚机

    2.9 Dcoker playground

    docekr 训练场
    共享 临时的
    登录 https://labs.play-with-docker.com/

    登录上去之后:就可以使用到cloud 云主机;

    在这里插入图片描述

    在这里插入图片描述

    有什么问题,欢迎留言讨论~~

    更多文章:系统学习Docker 不迷路:https://blog.csdn.net/liuge36/category_7651616.html

  • 相关阅读:
    我来了
    学习笔记-数据仓库和数据挖掘
    React及JSX常见问题
    JavaScript笔记,不定期更新
    比strlen执行速度更快的处理字符串长度的函数
    LESS笔记/注意手册(更新中)
    鼠标移到图片变化的三种写法(可移植性强、代码少)
    信息安全技术作业5--散列函数的应用及其安全性
    结对作业(web)
    读《构建之法》第4、17章
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614679.html
Copyright © 2011-2022 走看看