一,核心概念
1,Docker镜像(类似image)

2,Docker容器

轻量级的沙箱,利用容器来运行和隔离应用,容器是从镜像创建的应用运行实例。

3,Docker仓库

Docker仓库是存放镜像的场所。

 Docker仓库和仓库注册服务器的区别:后者是存放仓库的地方,往往放着多个仓库。

二、使用Docker镜像
1,获取镜像

docker pull NAME[:TAG],直接从Docker Hub镜像源来下载镜像。

 例如:docker pull ubuntu:14.04

 如不指定版本就是下载的latest的镜像。从默认的注册服务器下载。

 如要从非官方的仓库下载: docker pull hub.c.163.com/public/ubuntu:14.04

2,查看镜像文件

2.1 docker images 命令列出本地主机上已有镜像的基本信息。

  2.2 使用tag命令添加镜像标签

        docker tag ubuntu:latest myubuntu: latest

       添加标签实际起到类似链接的作用。

  2.3 docker inspect ubuntu:14.04 获取该镜像的详细信息,包括作者、适应架构、各层的数字摘要。

        docker inspect  -f 获取镜像的architecture

3,搜寻镜像

docker search

  docker search  --automated –s 3 nginx

4, 删除镜像

使用标签删除镜像 docker rmi myubuntu:latest

 使用镜像ID删除

 注意:当有该镜像创建的容器存在时,镜像文件无法被删除,除非加 –f 参数。

5,创建镜像

5.1 基于已有镜像的容器创建: docker commit

  5.2 基于本地模板导入 docker import

  5.3 基于dockerfile创建

6,存储和载入镜像

docker save –o ubuntu_14.04.tar ubuntu:14.04

  docker load –- input  ubuntu_14.04.tar  或者 docker load < ubuntu_14.04.tar

7, 上传镜像 docker push NAME[: TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]

三、操作Docker 容器
1,创建容器

1.1 新建容器

       docker create –it ubuntu:latest 新建完后,容器处于停止状态,要用docker start或者docker run启动它。

 1.2 启动容器

      docker run等价于先docker create 再docker start

      例如 docker run ubuntu  /bin/echo ‘Hello world’

      docker run –it ubuntu:14.04 /bin/bash

 1.3 守护态运行

      docker run –d  ubuntu /bin/sh –c “while true ; do echo ‘hello world’; sleep 1; done”

 1.4 获取容器的输出信息,docker logs

2, 终止容器

docker stop 【】

  docker kill 【】

  docker ps –qa 查看所有容器的ID

3,进入容器

attach

  exec 例如: docker exec –it 2432c23421  /bin/bash

 nsenter工具

4, 删除容器

docker rm

  如容器正在运行,需加-f 参数

5,导入导出容器

docker export

  docker import

四,Docker数据管理
1,数据卷(data volumes): 容器内数据直接映射到本地主机环境。

类似于linux中的mount

  docker run –d –P –name web –v /src/webapp:/opt/webapp training/webapp python app.py 

  上述命令加载主机的/src/webapp 目录到容器的 /opt/webapp目录

2,数据卷容器(Data volume containers): 使用特定容器维护数据卷。

多个容器间共享一些持续更新的数据,数据卷容器也是一个容器

  docker run –it –v /dbdata –name dbdata ubuntu

  docker run –it  -- volumes-from dbdata –name db1 ubuntu

  docker run –it  -- volumes-from dbdata –name db2 ubuntu

五、端口映射与容器互联
1,端口映射访问容器

-P 会随机映射一个49000~49900的端口到内部容器开放的端口

docker run –d –P training/webapp python app.py 

映射到指定地址的指定端口

docker run –d –p 127.0.0.1:5000:5000/udp  training/webapp python app.py 

查看映射端口的配置 docker port nostalgic_morse 5000

2, 互联机制实现便捷访问 –link 参数格式为 –link name:alias, 其中name是要连接的容器名称,alias是这个连接的别名。

docker run –d –P –name web –link db:db training/webapp python app.py

docker相当于在两个互联的容器之间建立了一个虚拟通道,而不用映射它们的端口到宿主主机上。在启动时也没有-P或-p标记,从而避免了暴露数据库服务到外部网络上。

六、使用dockerfile创建镜像
了解dockerfile的文件结构:一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时的执行指令(CMD)

编写完dockerfile后,使用docker build命令来创建镜像。