【Docker教程】Docker 安装

导读

本系列的docker学习笔者均采用Vagrant和VirtualBox进行,下面我会给出这两款工具的简单介绍。

Vagrant

介绍

Vagrant是hashicorp这家公司的产品,是一个让你可以方便设置你想要的虚拟机的便携式工具,它底层支持VirtualBox、VMware甚至AWS作为虚拟机系统。

我们可以通过Vagrant提供的命令行工具vagrant,可以快速启动根据我们事先定义好的Vagrantfile文件,来创建一个或者多个虚拟机。

Vagrantfile是用来定义vagrant project的,使用ruby语法。

安装

Vagrant支持Mac、Window,Centos 等各种平台,下图展示支持的各种平台列表

下载地址:https://www.vagrantup.com/downloads.html

  • 查看是否安装成功
1
2
# 查看vagrant版本信息
$ vagrant version
使用
  • 添加一个box

    格式:vagrant box add 远端的box地址或者本地的box文件名

1
2
# 添加 centos/7 的box
$ vagrant box add centos/7

通过这个步骤,vagrant会去box列表中找centos/7这个镜像,如果没有就去官方下载

box的名称我们通过官方提供的地址:https://app.vagrantup.com/boxes/search?page=1 去search

  • 初始化

    格式: vagrant init box列表中box的名称

1
2
3
4
5
# 新建一个目录,为centos7
$ mkdir centos7

# 进入centos7目录,初始化box,这里的(centos/7)就是我们第一步添加的box名称
$ vagrant init centos/7

这样就会在当前目录(centos7)生成一个Vagrantfile的文件,注意每个目录只能存放一个Vagrantfile文件,所以我们要事先定义好我们需要创建系统的目录

  • 启动虚拟机

    我们已经通过vagrant init centos/7 命令,得到了vagrantfile文件,下面我们可以通过vagrant up 命令来启动vagrantfile中定义的虚拟机

1
$ vagrant up

这样我们就在在Virtualbox中创建了一个虚拟机

  • 连接虚拟机
1
$ vagrant ssh
Vagrant 的其它基本命令
  • 查看命令帮助
1
$ vagrant --help
  • 查看虚拟机的状态
1
$ vagrant status
  • 查看box列表
1
$ vagrant box list
  • 停止虚拟机
1
$ vagrant halt
  • 销毁虚拟机
1
$ vagrant destory

通过自定义Vagrantfile来创建虚拟机
  • 编写Vagrantfile,灵活的设置虚拟机的参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.0"

boxes = [
{
:name => "docker-node-test1",
:eth1 => "192.168.215.10",
:mem => "2048",
:cpu => "2"
}
]

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 :private_network, ip: opts[:eth1]
end
end

#config.vm.synced_folder "./labs", "/home/vagrant/labs"
#config.vm.provision "bash", privileged: true, path: "./setup.sh"
end

Vagrantfile下载地址: xxxx

  • 创建虚拟机
1
vagrant up
Docker 安装

在 Mac 平台上安装

下载地址:https://www.docker.com/community-edition

centos7 平台上安装步骤

官网地址:https://docs.docker.com/install/linux/docker-ce/centos/#install-from-a-package

  • 卸载老的版本
1
2
3
4
5
6
7
8
9
10
$ 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 ce (注意docker 有docker ce 和 docker ee 两个版本,我们学习使用docker ce版本)

    ①、安装依赖包

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

②、设置稳定仓库地址

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

③、【可选】启用 edge 和 test 仓库

1
2
3
4
5
6
7
# 启用  --enable
$ sudo yum-config-manager --enable docker-ce-edge

$ sudo yum-config-manager --enable docker-ce-test

# 禁用 --disable
$ sudo yum-config-manager --disable docker-ce-edge

④、安装稳定版本的docker ce

1
$ sudo yum install docker-ce

⑤、【可选】查看具体的docker ce 版本,这样我们可以在生产环境安装具体的docker ce 版本

1
2
3
4
5
6
7
# 查看docker ce 版本列表
$ yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64 18.03.ce-1.el7.centos docker-ce-stable

# 使用命令安装具体的docker ce 版本
$ sudo yum install <FULLY-QUALIFIED-PACKAGE-NAME>

⑥、启动docker

1
$ sudo systemctl start docker

⑦、验证docker是否正确安装,可以通过运行 helloworld 镜像

1
$ sudo docker run hello-world

docker-machine 创建docker主机

如果我们已经在mac平台安装过docker,默认会自带docker-machine;到现在我们已经知道了,可以通过virtualbox这个虚拟机软件直接创建虚拟机,安装docker,得到一台docker主机、也可以通过编写vagrantfile创建虚拟机,安装docker,也能得到一台docker主机、现在我们还可以通过docker-machine命令,来创建一台带有docker的主机

  • 查看版本信息
1
2
3
4
5
$ docker-machine -v

# 或者

$ docker-machine create -d virtualbox demo
  • 创建docker虚拟机 (使用 virtualbox 类型的驱动)
1
$ docker-machine create demo

你也可以在创建时加上如下参数,来配置主机或者主机上的 Docker。

–engine-opt dns=114.114.114.114 配置 Docker 的默认 DNS

–engine-registry-mirror https://registry.docker-cn.com 配置 Docker 的仓库镜像

–virtualbox-memory 2048 配置主机内存

–virtualbox-cpu-count 2 配置主机 CPU

  • 查看虚拟机列表
1
$ docker-machine ls
  • 进入虚拟机
1
$ docker-machine ssh demo
  • 停止虚拟机
1
$ docker-machine stop demo

现在我们已经在mac(宿主机)上安装了docker,又通过 docker-machine 方式创建,得到了一台docker主机;那么现在我们有这样一种需求,如何让宿主机上的docker client端连接,通过docker-machine创建的docker server端。

步骤

  • 查看docker-machine创建虚拟机的环境变量
1
2
3
4
5
6
7
8
9
# 在 mac(宿主机上) 执行 查看docker-machine
$ docker-machine env demo

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/gulj/.docker/machine/machines/demo"
export DOCKER_MACHINE_NAME="demo"
# Run this command to configure your shell:
# eval $(docker-machine env demo)
  • 设置宿主机的docker环境变量为docker-machine创建的docker主机环境变量
1
$ eval $(docker-machine env demo)
  • 查看是否修改成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ docker version
Client:
Version: 17.12.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:03:51 2017
OS/Arch: darwin/amd64

Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:14:54 2018
OS/Arch: linux/amd64
Experimental: false

这样宿主机的docker client端就已经连接到通过docker-machine创建的docker主机server端,那么我们在本地操作的docker任何命令,直接作用于 docker-machine 创建的docker主机

Docker 在线实验室 ,无需安装,直接使用

地址

https://labs.play-with-docker.com/

介绍

Play With Docker ( Docker 在线实验室) 是一个运行在浏览器中的 Docker Playground,无需安装任何环境,就可以在线体验 Docker

使用