今天开始要真正全面系统学习Docker
了 💪
学习资源依然为慕课网实战课程,购买链接:系统学习Docker 践行DevOps理念
我们学习Docker
之前,先了解下什么是容器呢?
我们从上图左侧可以看到 在一个物理主机上我们通过共享Kernel
创建不同的容器,在不同的容器中运行不同的应用。
容器是APP层面的隔离,虚拟化是物理资源层面的隔离。
官方下载网站:https://docs.docker.com/install/
在Mac上安装Docker
安装很简单只需要按照官方文档来就可以了:https://docs.docker.com/docker-for-mac/install/
安装成功后我们可以在命令行下查看安装版本
1 | ➜ ~ docker --version |
我们通过这种方式安装 直接包含了很多工具:
What the install includes: The installation provides Docker Engine, Docker CLI client, Docker Compose, >Docker Machine, and Kitematic.
其中的Kitematic
是一个图形化管理工具,我们可以通过点击上面链接直接下载。
安装使用 Vagrant 、VirtualBox
Vagrant 安装参考文件:https://www.vagrantup.com/downloads.html
VirtualBox 安装参考文件:https://www.virtualbox.org/wiki/Downloads
VirtualBox
是一个虚拟机管理工具,我们可以只用VirtualBox
直接创建管理虚拟机。
Vagrant
是一款更加方便的虚拟机管理工具。
安装成功之后,我们可以在命令行模式下进行验证:
1 | ➜ centos vagrant --help |
我们新建一个空目录centos
,然后执行初始化虚拟机命令:
1 | ➜ centos vagrant init centos/7 |
执行完上面命令之后会生成一个Vagrantfile
文件,这个文件描述了我们将要创建一个什么样的虚拟机。
1 | ➜ centos cat Vagrantfile | grep -v '#' |
文件内容描述出我们要安装的是一个centos7
的虚拟机。
下面我们执行真正的安装命令:
1 | ➜ centos vagrant up |
up
命令会检查本地是够存在Box
,如果存在就使用本地的创建,如果不存在就从远程下载创建。
从上面我们看到创建了一个名为centos_default_1540002362574_56438
的虚拟机,我们可以使用VirtualBox
查看一下
会发现已经的确存在一个名为centos_default_1540002362574_56438
正在运行。
我们主机已经创建好,那怎么使用呢?
1 | ➜ centos vagrant ssh |
我们可以使用vagrant ssh
进入虚拟机,执行exit
退出虚拟机。
1 | ➜ centos vagrant status |
我们可以使用vagrant status
查看虚拟机的状态,上面展示了更多的命令。
1 | # 暂停主机 可以使用 up 唤醒 |
上面的一系列操作都是基于Vagrantfile
的,我们可以根据不同的Vagrantfile
创建不同的虚拟主机。
可以在官方查找到对应的Vagrantfile
:https://app.vagrantup.com/centos/boxes/7
Centos安装Docker
同样安装官方文档安装 :https://docs.docker.com/install/linux/docker-ce/centos/
删除旧版本:
1 | $ sudo yum remove docker \ |
Install required packages
1 | $ sudo yum install -y yum-utils \ |
下载repo
1 | $ sudo yum-config-manager \ |
安装docker
1 | $ sudo yum install docker-ce |
启动docker
服务
1 | $ sudo systemctl start docker |
查看docker
版本
1 | [root@hongshaorou ~]# docker version |
运行一个测试docker
1 | [root@hongshaorou ~]# sudo docker run hello-world |
上面就是一个完整的安装步骤。
Docker Machine的本地使用
什么是Docker Machine
呢?
我们看下文档:https://docs.docker.com/machine/overview/
之前我们在Mac上安装Docker
的时候 Docker Machine
也是同步安装好的。
1 | ➜ docker_learn docker-machine version |
使用 Docker Machine
可以直接创建一个安装好了Docker
的虚拟机。
1 | ➜ docker_learn docker-machine create demo |
Boot2Docker ISO
是一个安装好Docker
的ISO
文件,就是根据这个ISO
去创建虚拟机的。
如果你直接执行上面的命令,会等好久。。。
将IOS
文件下载好放到/Users/xxx/.docker/machine/cache
目录下再次执行上面的命令就很快了。
和Vagrant
一样我们可以查看创建了哪些虚拟机。
1 | ➜ docker_learn docker-machine ls |
同样我们可以在VirtualBox
看到有一个名为demo
的虚拟机
如何进去新建的虚拟机呢?
1 | ➜ docker_learn docker-machine ssh demo |
我们看下Docker Machine
有哪些命令:
1 | Commands: |
下面我们学习下Docker Machine
的其他知识
当我们在本机运行Docker version
的时候
1 | ➜ docker_learn docker version |
我们看到本地的Client
和Server
对应的系统版本号。
当我们退出本地Docker
服务的时候再次看下
1 | ➜ docker_learn docker version |
因为我们把本地的Docker
服务停掉,因此连接不上本地的Server
端。
现在我们把服务停掉之后无法连接服务端了,但是我们可以使用刚才使用Docker Machine
创建的虚拟机作为服务端。
我们登上demo
看下信息
1 | ➜ docker_learn docker-machine ssh demo |
将demo
环境变量拷到本地
1 |
|
这样,我们可以通过Docker Machine
在本地只装一个客户端,连接到远程的服务端就行了。
我们也可以在本地直接在远程 主机上创建一个安装好Docker
的机器。
如果想要在云端创建就需要各种driver
了,参考官方文档:https://docs.docker.com/machine/get-started-cloud/#examples
可以在这个网站直接体验Docker
:https://labs.play-with-docker.com/