官方定位
Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
Docker架构
Docker使用客户端-服务器架构。Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以 在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。
Docker守护程序
Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
Docker客户端
Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker API。Docker客户端可以与多个守护程序通信。
Docker对象
image
一个image是一个只读用于创建一个docker容器的指令模板。通常,一个image基于另一个image,并进行一些其他自定义。
创建image
1.直接pull开源的image
#下载并创建一个公开的ubuntu,默认为最新版
docker pull ubuntu
...
...#一些个性化自定义
...
#生成自己的image
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
2.使用dockerfile创建image
Dockerfile 中每一条指令创建镜像的一层:
FROM ubuntu
RUN apt-get -y update
RUN apt-get -y install sudo
RUN apt-get -y install python3
然后在Dockerfile目录下运行下面的指令:
#注意最后面的一个点
docker build -t="imagename:version" .
container
基本操作就是从已有的image创建container,直接run:
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
option:
1.-d要以分离模式启动容器,请使用-d=true或just -d选项。
2.–rm如果-d与–rm一起使用 ,则在容器退出或守护程序退出时(以先发生的为准)将容器删除。
3.-a=[] Attach to STDIN
, STDOUT
and/or STDERR
4.–name 指定container名称,缺省时自动生成
创建之后可以:
stop
docker stop [OPTIONS] CONTAINER [CONTAINER...]
start
docker start [OPTIONS] CONTAINER [CONTAINER...]
attach
docker attach [OPTIONS] CONTAINER