博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker系列一:Docker的介绍和安装
阅读量:5897 次
发布时间:2019-06-19

本文共 5875 字,大约阅读时间需要 19 分钟。

Docker介绍

Docker是指容器化技术,用于支持创建和实验Linux Container。借助Docker,你可以将容器当做重量轻、模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的高效创建、部署和复制,并能将其从一个环境顺利迁移至另外一个环境。

Docker官方网站:

Github Docker 源码:

基础特性

  • 基于C/S架构应用程序
  • 模块化
  • 层与镜像版本控制
  • 支持回滚
  • 快速部署

Docker的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

Docker基础架构图

Docker架构图

  • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器
  • Docker 容器通过 Docker 镜像来创建
  • DOCKER_HOST:真正运行容器的主机
  • Containers:容器,独立运行的一个或一组应用
  • Images:镜像,用于创建 Docker 容器的模板
  • Registry:镜像仓库

镜像image与容器Container区别

  • 镜像是静态的,不会运行
  • 容器则是动态的,有生命周期

Docker容器镜像站:

Docker object

  • image
  • containers
  • networks
  • volumes
  • plugins

Docker的安装

直接在CentOS上安装Docker

首先安装之前先卸载之前的旧版本:

$ sudo yum remove docker \                  docker-client \                  docker-client-latest \                  docker-common \                  docker-latest \                  docker-latest-logrotate \                  docker-logrotate \                  docker-selinux \                  docker-engine-selinux \                  docker-engine

安装docker依赖包:

$ sudo yum install -y yum-utils \  device-mapper-persistent-data \  lvm2

添加docker源(如果Docker官方下载的速度太慢也可以使用阿里的镜像源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo):

$ sudo yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo

安装docker:

$ sudo yum install docker-ce

安装完直接启动docker即可:

~]# systemctl start docker

使用docker version 可以看到我们安装docker的版本

~]# docker version Client: Version:      18.03.1-ce API version:  1.37 Go version:   go1.9.5 Git commit:   9ee9f40 Built:        Thu Apr 26 07:20:16 2018 OS/Arch:      linux/amd64 Experimental: false Orchestrator: swarmServer: Engine:  Version:      18.03.1-ce  API version:  1.37 (minimum version 1.12)  Go version:   go1.9.5  Git commit:   9ee9f40  Built:        Thu Apr 26 07:23:58 2018  OS/Arch:      linux/amd64  Experimental: false

使用Vagrant + Virtual Box快速搭建Docker环境

Vagrant介绍

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。我们可以使用它来干如下这些事:

  • 建立和删除虚拟机
  • 配置虚拟机运行参数
  • 管理虚拟机运行状态
  • 自动配置和安装开发环境
  • 打包和分发虚拟机运行环境

Vagrant的运行,需要依赖某项具体的虚拟化技术,最常见的有VirtualBox以及VMWare两款,早期,Vagrant只支持VirtualBox,后来才加入了VMWare的支持。

Vagrant安装和使用

Vagrant是基于其他虚拟化产品来创建虚拟机的,这里我们选择开源产品Virtual Box,我们先安装Virtual Box和Vagrant:

  • Virtual Box下载地址:
  • Vagrant下载地址:

下载好之后先使用vagrant init centos/7生成默认的Vagrntfile,然后使用vagrant up即可自动创建虚拟机,我们为了配置Docker环境需要更改下Vagrantfile,在创建虚拟机的时候自动安装docker环境(配置config.vm.provision "shell"选项)并且按照自己的要求配置虚拟机的规模和网络。

我的Vagrantfile配置如下

# -*- mode: ruby -*-# vi: set ft=ruby :Vagrant.require_version ">= 1.6.0"boxes = [    {        :name => "docker-1",    :eth1 => "172.16.56.11",        :mem => "1024",        :cpu => "1"    }]Vagrant.configure(2) do |config|  config.vm.box = "centos/7"  boxes.each do |opts|    config.vm.define opts[:name] do |config|      config.vm.hostname = opts[:name]      config.vm.provider "vmware_fusion" do |v|        v.vmx["memsize"] = opts[:mem]        v.vmx["numvcpus"] = opts[:cpu]      end      config.vm.provider "virtualbox" do |v|        v.customize ["modifyvm", :id, "--memory", opts[:mem]]        v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]      end      config.vm.network :public_network, ip: opts[:eth1]    end  end#  config.vm.synced_folder "../sync", "/home/vagrant/sync"  config.vm.provision "shell", inline: <<-SHELL      yum -y install wget      wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo      yum makecache      yum install -y yum-utils device-mapper-persistent-data lvm2      yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo      yum makecache fast      yum -y install docker-ce      sudo systemctl start docker  SHELLend

之后使用vagrant up创建即可

λ vagrant upBringing machine 'docker-1' up with 'virtualbox' provider...==> docker-1: Importing base box 'centos/7'...[KProgress: 20%[KProgress: 40%[KProgress: 90%[K==> docker-1: Matching MAC address for NAT networking...==> docker-1: Checking if box 'centos/7' is up to date...==> docker-1: Setting the name of the VM: docker-1_docker-1_1534247086153_83300==> docker-1: Clearing any previously set network interfaces...==> docker-1: Preparing network interfaces based on configuration...    docker-1: Adapter 1: nat    docker-1: Adapter 2: bridged==> docker-1: Forwarding ports...    docker-1: 22 (guest) => 2222 (host) (adapter 1)==> docker-1: Running 'pre-boot' VM customizations...==> docker-1: Booting VM...==> docker-1: Waiting for machine to boot. This may take a few minutes...    docker-1: SSH address: 127.0.0.1:2222    docker-1: SSH username: vagrant    docker-1: SSH auth method: private key    docker-1:     docker-1: Vagrant insecure key detected. Vagrant will automatically replace    docker-1: this with a newly generated keypair for better security.    docker-1:     docker-1: Inserting generated public key within guest...==> docker-1: Machine booted and ready!==> docker-1: Checking for guest additions in VM......

在这个过程中Vagrant会帮我们创建好一台Centos 7的虚拟机并安装好Docker环境,使用vagrant ssh直接登陆虚拟机

λ vagrant sshLast login: Wed Aug 15 15:54:32 2018 from 10.0.2.2[vagrant@docker-1 ~]$ sudo docker versionClient: Version:           18.06.0-ce API version:       1.38 Go version:        go1.10.3 Git commit:        0ffa825 Built:             Wed Jul 18 19:08:18 2018 OS/Arch:           linux/amd64 Experimental:      falseServer: Engine:  Version:          18.06.0-ce  API version:      1.38 (minimum version 1.12)  Go version:       go1.10.3  Git commit:       0ffa825  Built:            Wed Jul 18 19:10:42 2018  OS/Arch:          linux/amd64  Experimental:     false[vagrant@docker-1 ~]$

Vagrantfile中有一项config.vm.synced_folder可以配置本地文件夹同步到虚拟机,挂载本地文件夹到虚拟机中需要VBoxAdditions的支持,这个可以在虚拟机起来之后在安装,也可以参考这个插件的使用,这个功能比较适合开发人员,可以在本地编写代码而在Linux环境中调试代码运行。

Docker和vagrant都是最近才开始了解学习的,有什么错误或者不对的地方还请大家指正,有什么不懂的也可以一起交流。

转载于:https://www.cnblogs.com/zpzhue/p/9498024.html

你可能感兴趣的文章
NG-ZORRO-MOBILE 0.11.9 发布,基于 Angular 7 的 UI 组件
查看>>
我就是一个救火员(DBA救援)
查看>>
Centos7安装Gitlab10.0
查看>>
Windows Server 笔记(六):Active Directory域服务:域控制器安装
查看>>
discuz X3登录流程分析
查看>>
上传图片预览
查看>>
程序设计的一些原理
查看>>
lagp,lacp详解
查看>>
LVS之DR模式原理与实践
查看>>
struts2+extjs
查看>>
Apache2.4.33安装无systemctl/service status/state显示
查看>>
Docker的系统资源限制及验证
查看>>
在大公司呆5年,你就废了
查看>>
mac mamp mysql no start servel
查看>>
Docker简易版:使用更少击键运行Redis,MongoDB
查看>>
laravel框架快速入门(一)
查看>>
swing 鼠标监听addMouseMotionListener
查看>>
js如何实现10秒倒计
查看>>
ubuntu下解决鼠标滚轮不能使用的问题
查看>>
隐马尔可夫(HMM)、前/后向算法、Viterbi算法 再次总结
查看>>