docker 组成原理

docker的基本组成:

docker client客户端
docker daemon守护进程
docker image镜像
docker container容器
docker registry仓库

docker的基本组成:

docker客户端/守护进程

namespaces命名空间

提供了系统资源的隔离 进程 网络 文件系统
pid 进程隔离
net 管理网络接口
ipc 管理跨进程通信的访问
mnt 管理挂载点
UTS 隔离内核和版本标识

control groups控制组

资源限制
优先级设定
资源计量
资源控制

docker容器的能力

文件系统隔离:每个容器都有自己的root文件系统
进程隔离:每个容器都运行在自己的进程环境中
网络隔离:容器间的虚拟网络接口和IP地址都是分开的
资源隔离和分组:使用cgroup将cpu和内存之类的资源独立分配给每个docker容器

容器的基本操作:

启动容器: docker run image [command] [arg]
run 在新容器中执行命令
启动交互式容器:docker run -i -t image /bin/bash

查看容器:docker ps [-a] [-l]
docker inspect
自定义容器名:
docker run --name=自定义名 -i -t image /bin/bash
重新启动停止的容器:
docker start [-i]容器名
删除停止的容器:*不能删除运行中的容器
docker rm 容器名

守护式容器

什么是守护式容器:
能够长期运行
没有交互式会话
适合运行应用程序和服务

以守护形式运行容器:
docker run -i -t image /bin/bash
ctrl+p+q(退出,但保留后台)

查看容器日志:

docker logs [-f] [-t][–tail]容器名
-f --follow=true|false 默认false (实时显示最新的日志)
-t --timestatamps=true|false 默认false(显示时间戳)
–tail=“all” 控制显示结尾的条数

查看容器进程

docker top

在运行中的容器内启动新进程:

docker exec [-d] [-i][-t]容器名 [command] [arg]

停止守护式容器:

docker stop 容器名
docker kill 容器名

docker镜像

列出镜像:docker image [optsions] [repository]仓库
查看镜像的详细信息:docker inspect 仓库名:tag名
删除镜像:docker rmi 仓库名+tag名
删除所有镜像:docker rmi $(docker images -q ubuntu)
查找镜像:docker search
拉取镜像:docker pull
推送镜像:docker push

构建镜像:

保存对容器的修改,再次使用
自定义镜像的能力
以软件的形式打包并分发服务及其运行环境

docker commit 通过容器构建:docker commit [options] container [repository:[tag]]

docker build 通过dockerfile文件构建

dockerfile文件
docker build

docker 组成原理_第1张图片

查看守护进程:ps -ef|grep docker
status docker
使用service命令管理:
service docker start
service docker stop
service docker restart
docker的启动选项:

docker C/S模式、## Remote API

客户端 、守护进程 通过socket 连接

socket方式:
unix://var/run/docker.sock (默认方式)
tcp://host:port
fd://socketft

Docker守护进程配置和操作

查看守护进程

设置docker 守护进程 --docker启动选项

docker -d [OPTIONS]
docker 组成原理_第2张图片
docker 组成原理_第3张图片
docker 组成原理_第4张图片

docker 组成原理_第5张图片
docker 组成原理_第6张图片

docker 组成原理_第7张图片
docker 组成原理_第8张图片

启动配置文件

/etc/default/docker

docker 远程访问

-H 选项 配置远程访问

客户端

使用DOCKER_HOST 选项,指定客户端访问方式

export DOCKER_HOST="tcp://10.211.55.5:2375"

想重新连本机,只需置空即可

export DOCKER_HOST="”

dockerfile指令

指令格式 注释和指令
FROM<镜像名>:必须是已经存在的镜像 基础镜像 必须是第一条非注释指令
MAINTAINER:指定镜像的作者信息,包含镜像的所有者和联系信息
RUN:指定当前镜像中运行的命令 shell模式 exec模式
EXPOSE:指定运行该镜像的容器使用的端口
CMD:执行一个命令,是在容器运行时运行的。指定默认模式下运行的
docker 组成原理_第9张图片
EXTERYPOINT:不会被run命令给打断。也是执行命令的一种

ADD:将文件或目录复制到使用dockerfile构建的镜像中。ADD指令包含类似于tar的解压功能。(如果解压,用add)
如果单纯的复制文件,docker推荐使用COPY
COPY:
VOLUME:(创建添加卷)
WORKDIR:在创建容器时创建工作目录,使用绝对路径(后面的entrypoint 或cmd命令会从这个目录进行执行
ENV:设置环境变量
USER:指定用户来运行
ONBUILD:为镜像添加触发器(当一个镜像被其他镜像作为基础镜像执行时,会在构建过程中插入指令)

dockerfile的构建过程

从基础镜像运行一个容器
执行一条指令,对容器做出修改
执行类似dockercommit的操作,提交一个新的镜像层
再基于刚提交的镜像运行一个新容器
执行dockerfile中的下一条指令,直至所有指令执行完毕。

查看镜像构建的过程
docker history [image]

查看构建过程

docker history [镜像名称]

你可能感兴趣的:(技术专栏#,Docker技术)