Docker总结

引入

由于引入了Windows操作系统的计算机,因此将基于Windows进行说明。
首先,您需要从这里下载安装程序并进行安装。
安装完成后,将会生成一个名为Docker Quickstart Terminal的快捷方式。
* 附加说明于2016年07月20日:似乎有一个名为Docker Toolbox的工具箱新发布了,因此已将上述链接更换为该工具箱链接。

登录

当您启动Docker快速入门终端时,会打开命令提示符。
您可以直接输入docker命令,或者

$ docker
Usage: docker [OPTIONS] COMMAND [arg...]

A self-sufficient runtime for linux containers.

Options:
  -D, --debug=false                                                     Enable debug mode
  -d, --daemon=false                                                    Enable daemon mode
  -H, --host=[]                                                         Daemon socket(s) to connect to
  -h, --help=false                                                      Print usage
  -l, --log-level=info                                                  Set the logging level
  ・
  ・
  ・
    top       Lookup the running processes of a container
    unpause   Unpause a paused container
    version   Show the Docker version information
    wait      Block until a container stops, then print its exit code

Run 'docker COMMAND --help' for more information on a command.

$

或者,您可以通过boot2docker ssh命令登录到虚拟机,然后使用docker命令。

$ boot2docker ssh
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.6.2, build master : 4534e65 - Wed May 13 21:24:28 UTC 2015
Docker version 1.6.2, build 7c8fca2
docker@boot2docker:~$

使用Docker镜像创建服务器

我将从 docker 镜像创建一个服务器。假设我们要以 centos 为基础创建服务器。在这种情况下,我们可以使用 docker search 命令轻松找到 docker 镜像。

docker@boot2docker:~$ docker search centos
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                        The official build of CentOS.                   1094      [OK]
tutum/centos                  Centos image with SSH access. For the root...   13                   [OK]
blalor/centos                 Bare-bones base CentOS 6.5 image                9                    [OK]
torusware/speedus-centos      Always updated official CentOS docker imag...   6                    [OK]
million12/centos-supervisor   Base CentOS-7 with supervisord launcher, h...   5                    [OK]
jdeathe/centos-ssh            CentOS-6 6.6 x86_64 / EPEL Repo. / OpenSSH...   3                    [OK]
layerworx/centos              A general CentOS 6 image with the EPEL6 an...   2                    [OK]
jdeathe/centos-ssh-mysql      CentOS-6 6.6 x86_64 / MySQL.                    2                    [OK]
pdericson/centos              Docker image for CentOS                         0                    [OK]
nathonfowlie/centos-jre       Latest CentOS image with the JRE pre-insta...   0                    [OK]

由于有关野生Docker镜像数量众多的信息,因此(尤其是在企业环境中使用时)建议使用官方镜像。这次我们将使用被标记为“centos”的官方镜像。

那么,开始吧。

docker@boot2docker:~$ docker pull centos
latest: Pulling from centos
c852f6d61e65: Pull complete
7322fbe74aa5: Already exists
f1b10cd84249: Already exists
centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:a4627c43bafc86705af2e8a5ea1f0ed34fbf27b6e7a392e5ee45dbd4736627cc
Status: Downloaded newer image for centos:latest
docker@boot2docker:~$

然后… …)

docker@boot2docker:~$ docker run -i -t --name guest centos:latest /bin/bash
[root@557d34c7c799 /]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@557d34c7c799 /]#

通过这个命令成功创建了服务器,并且已经登录成功了。非常简单。使用”exit”命令可以登出。
即使刚刚登出了,也可以通过”docker start”命令再次登录,然后使用”docker attach”命令。但是,在执行”docker start”或”docker attach”命令时需要知道容器ID。可以通过”docker ps”命令来查找容器ID。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

那个?对于找不到任何显示而感到惊讶的人,请尝试输入“docker ps -a”。

$ docker ps -a
CONTAINER ID        IMAGE                 COMMAND            CREATED             STATUS                       PORTS           NAMES
557d34c7c799        centos:latest         "/bin/bash"        24minutes ago       Exited (0) 15 minutes ago                    guest
・
・
・

已经显示了。这表示容器存在但处于停止状态。要启动容器,请键入docker start [容器ID]。
嗯?容器ID??你指那个10位以上的随机数吗??
我知道输入容器ID可能有点麻烦,但只要输入到能唯一确定容器ID的程度就可以了。个人认为这个规则挺好的。

$ docker start 557
557
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS           PORTS    NAMES
557d34c7c799        centos:latest       "/bin/bash"         30 minutes ago      Up 17 seconds             guest

不是通过docker ps -a命令,而是通过docker ps命令成功显示了容器。要进一步登录容器,可以使用docker attach [容器ID]命令。

$ docker attach 557
[root@557d34c7c799 /]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

我成功地登录了CentOS,没有出现任何问题。

尝试使用Dockerfile

考虑到Dockerfile的可维护性,更常使用“docker”命令而不是“boot2docker ssh”。

(接下来…)