alt text

Docker 是基于 Linux 的 operating system level 虚拟化技术。在 Host 主机上隔离出 CPU, memory, I/O 与网络资源,分配给每个虚拟容器(Container)使用。


Docker 用到的主要观念:

  • image: 镜像

    每个虚拟机的镜像,类似光盘ISO文件,网络上有 docker image reposiory, 可以很方便的使用各种准备好的 image, 如 ubuntu, mysql, redis…

alt text

  • container: 容器

    将镜像启动后就会成为一个运行的容器。容器移除后,image中不会保存运行时的变动。因此需要使用 volume 来保存移动。

  • volume: 文件系统

    可以弹性的将资料夹加载到容器中,保留容器中变动的文件。利用这个特性也可以方便的进行备份与还原。


Hello world to Docker:

  • 安装 Docker

    在 Mac 上安装,有两种方式: boot2docker / Kitematic 。Kitematic提供一个很简略的图形界面,但是功能很少。所以建议直接安装 boot2docker,使用命令行操作。


# 安装完成后,需要设定几个系统环境变数
set -x DOCKER_HOST tcp://{ip_address_of_boot2docker}:{port}
set -x DOCKER_CERT_PATH /Users/{username}/.boot2docker/certs/boot2docker-vm
set -x DOCKER_TLS_VERIFY 1

# 第一次启动前,进行初始化 init
$ boot2docker init
        
# 启动 boot2docker
$ boot2docker up
        
# 查看 boot2docker 的状态
$ boot2docker status
running
  • 试试看运行 ubuntu container,步骤如下
# 下载获得 ubuntu image
$ docker pull ubuntu:latest
latest: Pulling from ubuntu
e9e06b06e14c: ...
...
Status: Image is up to date for ubuntu:latest

# 看到现在有了 image ubuntu:latest
$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu                latest              07f8e8c5e660        3 weeks ago         188.3 MB


# 运行 ubuntu container, 执行 echo 打印信息命令,输出 "Hello World!",
# 将这个容器命名为 ubuntu-sys, 也可不特别指定命名
$ docker run --name=ubuntu-sys ubuntu:latest echo Hello World!
Hello World!

# 看看目前系统中的容器;一旦执行完 echo 命令,容器就停止,不在运行状态了
$ docker ps -a
CONTAINER ID  IMAGE          COMMAND              CREATED        STATUS                    PORTS  NAMES
d3f3ffa2d4a8  ubuntu:latest  "echo Hello World!"  6 seconds ago  Exited (0) 5 seconds ago         ubuntu-sys

$ 再试试看到 ubuntu 容器中下命令
$ docker run -it --name=ubuntu-sys2 ubuntu:latest /bin/bash
root@664fa9e29a4a:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@664fa9e29a4a:/# exit
exit

# 删除掉 container
$ docker rm ubuntu-sys
$ docker rm ubuntu-sys2


其他:

  • 跨平台支援:

    Docker 是基于 Linux 的虚拟化软件。不过在 Mac OSX, windows 上也可以安装,是透过 VirtualBox 作为中介的 Docker Host,带来效能上的损失;因此在正式生产环境上,需要使用 Linux。

    目前 Docker 无法运行 microsoft windows 的虚拟容器,但微软未来有计划要提供支援。