Docker架构总览

架构图.png

最核心的是 Docker Daemon 我们称之为 Docker 守护进程,也就是 Server 端,Server 端可以部署在远程,也可以部署在本地,因为 Server 端与客户端 ( Docker Client ) 是通过 Rest API 进行通信。

Docker CLI 实现容器和镜像的管理,为用户提供统一的操作界面,这个客户端提供一个只读的镜像,然后通过镜像可以创建一个或者多个容器 (container),这些容器可以只是一个 RFS ( Root File System ),也可以是一个包含了用户应用的 RFS。容器在 Docker Client 中只是一个进程,两个进程是互不可见的。

用户不能与 server 直接交互,但可以通过与容器这个桥梁来交互,由于是操作系统级别的虚拟技术,中间的损耗几乎可以不计

Docker核心概念

相关概念说明
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板。
Docker 容器 (Container)容器是独立运行的一个或一组应用。
Docker 客户端 (Client)Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。
Docker 主机 (Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
Docker 仓库 (Registry)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker MachineDocker Machine 是一个简化 Docker 安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装 Docker,比如 VirtualBox、 Digital Ocean、Microsoft Azure。

常用操作命令

容器相关命令
1. 运行 docker run

示例:docker run ubuntu:15.10 /bin/echo “Hello world”
参数:
ubuntu:15.10: 镜像名(先检测本地主机上查找镜像是否存在,如果不存在则去 Docker Hub 下载公共镜像)
/bin/echo “Hello world”:在镜像中运行的命令
其他参数:

参数说明
-i允许你对容器内的标准输入 (STDIN) 进行交互
-t进入指定系统的终端(伪终端)
-d后台运行(创建一个以进程方式运行的容器)
-P将容器内部使用的网络端口映射到我们使用的主机上
-p设置端口号(-p 127.0.0.1:5001:5000/udp 通过 5001 访问 5000 端口设置为 udp )
–name设置启动容器名
-v设置挂载目录(如:-v $PWD/www:/www 将主机中当前目录下的 www 挂载到容器的 / www)
2. 查看正在运行的 docker 容器 docker ps

返回内容说明

字段名说明
CONTAINER ID容器 ID
IMAGE镜像名
COMMAND执行命令
CREATED创建时间
STATUS状态
PORTS端口信息
NAMES名称
其他参数
参数说明
-------------:-----
-l显示最后创建的容器(包括所有状态)
-a显示所有容器(默认显示刚刚运行)
-n显示最后创建的n 条
-q只显示 id
-s显示文件大小
3. 停止容器 docker stop id/name
4. 启动容器 docker start id/name
5. 删除容器 docker rm id/name
6. 查看容器运行日志 docker logs id/name
7. 查看端口映射情况 docker port id
8. 查看容器内部运行的进程 docker top id/name
9. 查看Docker底层信息 docker inspect id/name
10. 删除容器 docker rm id/name 删除时必须停止不然报错
镜像相关命令
1. 查看有哪些镜像 docker images
2. 搜索镜像 docker search name
3. 下拉镜像 docker pull name
4. 创建镜像 docker bulid

流程:

  • 创建文件 Dockerfile
    docker build -t runoob/centos:6.7 ./
    -t 指定要创建的目标镜像名
    最后一个参数是 Dcokerfile 文件位置,可以绝对可以相对

  • Dcokerfile 文件内容:
    内容说明:
    FROM: 指定使用哪个镜像源
    RUN: 告诉 docker 在镜像内执行的命令

内容示例:

FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
5. 使用 docker commit 创建副本

在一个新的容器中安装你想要的软件然后对出这个容器可以获取到 ID
然后使用 docker commit -m="has update" -a="aaa" e218edb10161 aaa/ubuntu:v2 来创建一个副本
参数说明:

参数说明
-m提交的描述信息
-a指定镜像作者
e218edb10161容器ID
runoob/ubuntu:v2指定要创建的目标镜像名
6. 修改镜像标签 docker tag ID tag
7. 删除镜像 docker rmi id

更多推荐