Docker现在火的不得了,也一直很好奇,利用一些时间简单的学习一下,知道一下到底是个什么东西,基本的原理和应用。
初学,只是简单的入门和学习的一个记录,如有不对,欢迎指正。
Docker介绍
Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
通俗讲docker就是集装箱原理,从图标就可以看出来^_^
- Docker Client: Docker Client提供给用户一个终端,用户输入Docker提供的命令来管理本地或者远程的服务器。
- Docker Host: 一个物理或者虚拟的机器用于执行Docker守护进程和容器。
- Docker Daemon: 每台服务器上只要安装了Docker的环境,基本上就跑了一个后台程序Docker Daemon,Docker Daemon会接收Docker Client发过来的指令,并对服务器的进行具体操作。
- Docker Images: 用于创建Docker容器的模板。是只读的。
- Docker Container: 是真正跑项目程序、消耗机器资源、提供服务的地方,Docker Container通过Docker Images启动,在Docker Images的基础上运行你需要的代码。
- Docker Registry: 是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。
- Docker Machine: 是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker并管理Host。
Docker安装
试验环境是Win7
从Docker官网下载:Docker-Windows,安装方式,Windows下就是双击,下一步,下一步了。。。
Docker运行
安装完毕后,在应用程序里点击‘Docker Quickstart Terminal’打开Docker,但是有下边这个错误提示: “Looks like something went wrong in step ‘Finalize’…”
Solution:
在‘docker toolbox’的安装目录下,打开‘start.sh’,做如下修改(注释掉clear行):1
2
3STEP="Finalize"
#clear
cat << EOF
运行结果: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 ## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
Start interactive shell
yongfei.hu@yongfei-hu MINGW64 ~
$ docker version
Client:
Version: 17.10.0-ce
API version: 1.33
Go version: go1.8.3
Git commit: f4ffd25
Built: Tue Oct 17 19:00:02 2017
OS/Arch: windows/amd64
Server:
Version: 17.10.0-ce
API version: 1.33 (minimum version 1.12)
Go version: go1.8.3
Git commit: f4ffd25
Built: Tue Oct 17 19:05:23 2017
OS/Arch: linux/amd64
Experimental: false
Docker Machine:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17$ docker-machine ssh default
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 17.10.0-ce, build HEAD : 34fe485 - Wed Oct 18 17:16:34 UTC 2017
Docker version 17.10.0-ce, build f4ffd25
docker@default:~$
Docker生命周期
Docker三个基本概念
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
理解了这三个概念,就理解了整个生命周期。我们可以把镜像,容器想像成java的类和对象,即容器是由镜像实例化而来的。