docker client客户端
docker daemon守护进程
docker image镜像
docker container容器
docker registry仓库
docker客户端/守护进程
提供了系统资源的隔离 进程 网络 文件系统
pid 进程隔离
net 管理网络接口
ipc 管理跨进程通信的访问
mnt 管理挂载点
UTS 隔离内核和版本标识
资源限制
优先级设定
资源计量
资源控制
文件系统隔离:每个容器都有自己的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 image [optsions] [repository]仓库
查看镜像的详细信息:docker inspect 仓库名:tag名
删除镜像:docker rmi 仓库名+tag名
删除所有镜像:docker rmi $(docker images -q ubuntu)
查找镜像:docker search
拉取镜像:docker pull
推送镜像:docker push
保存对容器的修改,再次使用
自定义镜像的能力
以软件的形式打包并分发服务及其运行环境
dockerfile文件
docker build
查看守护进程:ps -ef|grep docker
status docker
使用service命令管理:
service docker start
service docker stop
service docker restart
docker的启动选项:
客户端 、守护进程 通过socket 连接
socket方式:
unix://var/run/docker.sock (默认方式)
tcp://host:port
fd://socketft
/etc/default/docker
-H 选项 配置远程访问
使用DOCKER_HOST 选项,指定客户端访问方式
export DOCKER_HOST="tcp://10.211.55.5:2375"
想重新连本机,只需置空即可
export DOCKER_HOST="”
指令格式 注释和指令
FROM<镜像名>:必须是已经存在的镜像 基础镜像 必须是第一条非注释指令
MAINTAINER:指定镜像的作者信息,包含镜像的所有者和联系信息
RUN:指定当前镜像中运行的命令 shell模式 exec模式
EXPOSE:指定运行该镜像的容器使用的端口
CMD:执行一个命令,是在容器运行时运行的。指定默认模式下运行的。
EXTERYPOINT:不会被run命令给打断。也是执行命令的一种。
ADD:将文件或目录复制到使用dockerfile构建的镜像中。ADD指令包含类似于tar的解压功能。(如果解压,用add)
如果单纯的复制文件,docker推荐使用COPY
COPY:
VOLUME:(创建添加卷)
WORKDIR:在创建容器时创建工作目录,使用绝对路径(后面的entrypoint 或cmd命令会从这个目录进行执行)
ENV:设置环境变量
USER:指定用户来运行
ONBUILD:为镜像添加触发器(当一个镜像被其他镜像作为基础镜像执行时,会在构建过程中插入指令)
从基础镜像运行一个容器
执行一条指令,对容器做出修改
执行类似dockercommit的操作,提交一个新的镜像层
再基于刚提交的镜像运行一个新容器
执行dockerfile中的下一条指令,直至所有指令执行完毕。
查看镜像构建的过程
docker history [image]
docker history [镜像名称]