ref: The Doocker Book
Ch 2 安装Docker
容器是直接运行操作系统内核之上的用户空间。
Docker核心组件:
- Docker客户端、服务器端,也成为Docker引擎;
- Docker镜像;
- Registry;
- Docker容器。
Docker用Registry来保存用户构建的镜像。
Registry分为:1. 公共;2. 私有。
Mac OS X Docker安装说明:
ref: https://docs.docker.com/docker-for-mac/
按照Docker官网安装Docker.app后需要设置PATH环境变量否则无法找到
docker
命令;
设置方法:
vim ~/.bash_profile
. .bash_profile
export PATH=/Applications/Docker.app/Contents/Resources/bin:$PATH
Ch 3 Docker入门
Docker命令
- 容器管理
含义 | 命令 |
---|---|
创建容器 | docker run --name your_container_name -i -t ubuntu /bin/bash |
启动容器 | docker start your_container_id_or_name |
重启容器 | docker restart your_container_id_or_name |
关闭容器 | docker stop your_container_id_or_name |
删除容器 | docker rm your_container_id_or_name |
附着会话 | docker attach your_container_id_or_name |
强制退出容器 | docker kill your_container_id_or_name |
查看详细容器配置 | docker inspect your_container_id_or_name |
查看容器安装信息 | docker info |
查看正在运行的容器 | docker ps |
查看所有容器 | docker ps -a |
查看容器正在运行的进程 | $ docker top your_container_id_or_name |
查看容器端口映射 | docker port |
查看容器日志 | docker logs |
- 创建守护式容器
docker run --name deamon_container_test -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done"
- 查看容器日志
docker logs --tail 100 your_container_name
- 镜像管理
含义 | 命令 |
---|---|
查看镜像 | docker images |
搜索 | docker search image_name |
构建镜像 | docker build -t your_image dockerfile_dir |
删除镜像 | docker rmi images_id |
推送镜像 | docker push images_id |
- Docker Networking管理
含义 | 命令 |
---|---|
创建网络 | docker network create |
Ch 4 构建镜像
Docker构建镜像的方式:
$ docker commit
$ docker build
- Dockerfile基于DSL(Domain Specific Language) 语法的指令来构建一个Docker镜像;
- 一旦有Dockerfile就可以使用
$ docker build
命令基于该Dockerfile中的指令构建一个新的镜像;
Dockerfile语法结构:
# 我是注释
COMMAND arguments
- 命令必须大写
- 命令后跟参数
- Dockerfile中的指令会严格按照书序从上到下执行,所以应该合理安排指令顺序;
Dcokerfile 执行流程;
- Docker从基础镜像运行一个容器;
- 执行一条指令,对容器做出修改;
- 执行类似
$ docker commit
的操作,提交一个新的镜像层; - Docker在基于刚提交的镜像运行一个新容器;
- 执行Dockerfile中的下一条指令,知道所有指令都执行完毕。
Dockerfile 指令
命令 | 含义 |
---|---|
FROM | 指定基础镜像 |
CMD | 指定一个容器启动时要运行的命令,注意:$ docker run 命令可以覆盖CMD命令,CMD命令只能指定一条,如果指定多条则最后一条生效 |
RUN | 指定镜像被构建时运行的命令 |
ENTRYPOINT | 与CMD指令类似,但$ docker run 命令行指定的任何参数都会被当做参数再次传递给ENTRYPOINT指令中指定的指令 |
WORKDIR | ENTRYPOINT或CMD命令运行的工作目录 |
ENV | 在镜像构建过程中设置环境变量 |
USER | 指定运行镜像的用户,默认:root |
VOLUME | 向基于镜像创建的容器添加卷 |
ADD | 用来指定将构建环境下的文件和目录复制到镜像中 |
COPY | 复制文件,类似ADD但不会自动提取和解压 |
LABEL | 为Docker镜像添加元数据 |
ONBUILD | 能为镜像添加触发器 |
- 从新镜像启动容器
$ docker run -d -p 80 --name web-server jackycser/web-server nginx -g "deamon off;"
- 自动构建
在GitHub或BitBucket仓库中包含Dockerfile文件并将仓库连接到Docker Hub即可。
Ch 5 使用Docker测试静态网站
卷:是在一个或者多个容器内被选定的目录,可以绕过分层的联合文件系统(Union File System),为Docker提供持久数据或者共享数据。
这意味着对卷的修改会直接生效,并绕过镜像。
当提交或者创建镜像时,卷不被包含在镜像里。
- Docker Networking
Docker Networking:容器之间的连接用网络建立
5.3 Docker 用于持续集成
Ch 6 使用Docker构建服务
6.2 使用Docker构建一个Java应用服务
Ch 7 Docker 编配和服务发现
Docker编配:
服务的自动配置、协作和管理服务的过程。
在Docker的世界里,编配用来表述一组实践过程,这个过程会管理运行在多个Docker容器里的应用,而这些Docker容器有可能运行在多个宿主主机上。
- Docker Compose:用一个YAML文件定义一组要启动的容器,以及容器运行时的属性,Docker Compose 称这些容器为“服务”:
容器通过某些方法并指定一些运行时的属性来和其他容器产生交互。
- 编配工具功能:
- 调度和集群管理
- 服务发现
- Compose
含义 | 命令 |
---|---|
启动 | docker-compose up |
查看日志 | docker-compose logs |
停止 | docker-compose stop |
查看进程 | docker-compose ps |
删除服务 | docker-compose rm |
7.3 Docker Swarm
Docker Swarm是一个原生的Docker集群管理工具。
- Swarm 将一组Docker主机作为一个虚拟的Docker主机来管理。
Ch 8 使用Docker API
在Docker 生态系统中一共有3种API:
- Registry API:提供了与来存储Docker 镜像的 Docker Registry 集成的功能;
- Docker Hub API:提供了与Docker Hub集成的功能;
- Docker Remote API:提供了与Docker 守护进程进行集成的功能。
所有这3种API都是RESTful风格的。
- Docker Remote API 也提供了所有在命令行中能使用的对容器的所有操作。