Docker简介与实践

介绍

Docker是一个开源的应用容器引擎。Docker可以将应用程序及其依赖打包成镜像(Image),并在同一个服务器中启动多个容器(Container)共享操作系统内核,分别独立运行镜像(Image)。

1

安装

在OS X中安装Docker(OS X版本需要满足10.8及以上)。从“https://www.docker.com/products/docker-toolbox” 下载DockerToolbox-1.10.0.pkg并运行安装:
1
安装步骤中的配置均采用默认选项,安装成功后,应用程序会新增以下两项,分别是Docker命令行工具和GUI工具:
1

运行镜像

运行“Docker Quickstart Terminal”打开命令行窗口。第一次使用时,Docker会首先执行一些初始化操作。在命令行中,可以执行Docker命令,例如:

docker run hello-world

该命令会执行以下操作:

  1. 在本地查找有无镜像“hello-world”;
  2. 若本地没有镜像“hello-world”,则从Docker Hub下载镜像;
  3. 启动容器加载镜像“hello-world”并运行。

以下是命令执行截图:
1
Docker还提供了一个示例镜像“whalesay”,该镜像基于Ubuntu,打包了应用程序“cowsay”,执行以下Docker命令,启动容器加载镜像“whalesay”并运行程序“cowsay”,“boo”是程序传入参数:

docker run docker/whalesay cowsay boo

命令执行后,会输出动物图像以及程序传入参数:
1

创建镜像

基于已有镜像,可以创建新的镜像,将应用程序及其依赖打包进新的镜像中。编写Dockerfile文件如下所示:

1
2
3
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

其中:

  1. “FROM”语句说明基于镜像“whalesay”的最新版本创建新的镜像;
  2. “RUN”语句说明在新镜像中安装应用程序”fortunes”;
  3. “CMD”语句说明在启动容器加载镜像后执行“/usr/games/fortune -a | cowsay”,即通过程序“fortune”生成句子并通过管道传给程序“cowsay”展示。

在Dockerfile文件所在目录下执行以下Docker命令,根据Dockerfile文件创建新镜像“docker-whale”:

docker build -t docker-whale .

命令执行后,开始新镜像的创建过程,会依次输出各步信息:
1
1
创建镜像成功后,执行以下Docker命令,可以查看本地所有镜像:

docker images

其中已新增镜像“docker-whale”:
1
运行镜像“docker-whale”:

docker run docker-whale

1

推送镜像

镜像创建成功后,可以将镜像推送到Docker Hub。首先在Docker Hub创建账号并新建仓库“docker-whale”。执行以下Docker命令,将docker-whale重命名为“namespace/image”的格式,其中“namespace”是Docker Hub中的账号:

docker tag 8f35c689968c magicwt/docker-whale:lastes

1
执行以下Docker命令,登录Docker Hub:

docker login –username=magicwt --email=xxx@xxx.com

1
执行以下Docker命令,推送镜像:

docker push magicwt/docker-whale

1
访问“https://hub.docker.com/r/magicwt/docker-whale/” ,Docker Hub上已有push记录:
1