Docker简介
Docker给了这个问题一个标准化解决方案
在交付给运维时,把环境也给打包成镜像带走
Docker基于Go语言实现的云开源项目
主要目标:一次封装 ,到处运行
传统虚拟机要模拟硬件,之后运行操作系统
而docker则是运行于宿主的内核,容器没有自己的内核,而且没有硬件虚拟
每个容器之间相互隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源
Docker基本组成
镜像 容器 仓库
镜像
镜像等于类:容器等于实例对象
容器
仓库
总结
Docker安装
centOS6.8
centOS7
1.
2.
3.
4.
5.
6.
HelloWorld镜像
docker run hello-world
Docker Run运行机制
Docker运行原理
1.CS结构
2.守护进程运行在主机上,通过Socket连接从客户端访问
3.守护进程从客户端接受命令并运行容器
Docker什么比VM快
Docker的常用命令
帮助命令
版本信息
docker version
docker个人信息
docker info
docker帮助
docker –help
类似linux man
镜像命令
列出本地镜像
docker images
参数-a
列出本地所有的镜像,含中间映像层
参数 -q
只显示镜像ID
参数 –digests
显示描述
参数 –no-trunc
完整的镜像信息
镜像搜索
docker search
-s args 参数
列出不小于参数star数的镜像
–automated
只列出automated build类型的镜像
拉取镜像
docker pull xxx[:version]
默认latest版本
删除镜像
docker rmi xxx
需要先关闭相关镜像
-f 参数 强行删除
删除多个
docker rmi xxx xxx空格分隔
删除全部
docker rmi -f $(docker images -qa)
容器命令
新建并启动容器
docker run [OPTIONS] image [COMMAND] [ARGS..]
列出当前所有正在运行的容器
docker ps
参数:
退出容器
启动容器
docker start xxx(id或容器名)
重启容器
docker restart xxx(id或容器名)
停止容器
docker stop xxx
强制关闭容器
docker kill xxx
删除已停止的容器
docker rm xxx
-f 强制删除
启动守护型容器
docker run -d
查看容器日志
docker logs -f -t –tail 容器id
查看容器内进行的进程
docker top 容器id
查看容器内部细节
docker inspect 容器ID
进入正在运行的容器和命令行交互
docker attach -it 容器ID bashshell
attach进入容器
exec在外面运行容器内部的命令
拷贝容器内的内容
docker cp 容器ID:容器路径 容器外路径
总结:
789
Docker镜像原理
镜像介绍
UnionFS联合文件系统
分层、轻量级、高性能的文件系统,支持对文件系统的修改作为一次提交来一层层的叠加
特性:
Docker镜像加载原理
分层镜像
为什么要采用这种分层结构
共享资源
多个镜像都由相同的base镜像,那么宿主机只需要一个base镜像就够了
各个镜像共享使用
内存中只需要加载一份base镜像就可服务
特点
Commit操作补充
通过commit提交自定义的镜像
docker commit -a=”artist” -m=”message” xxxxx namespace/imagename:version
Docker容器数据卷
是什么
将Docker容器中的数据作持久化+数据共享
特点
操作
简单来讲,将宿主机目录与容器目录软连接上,可读写,关闭容器后修改,重新打开容器也可查看更改。
:ro 只读
容器数据卷用DockerFile添加
DockerFile是什么?
是镜像的一种源码级操作
DockerFile=源码
images=实例
VOLUME指令
使用VOLUME添加DockerFile
build指令
使用build把dockerfile生成镜像
生成的数据卷与宿主机的连接地址在inspect命令中可显示
容器间传递共享
–volumes-from
属于分布式共享
dc01被删除后,dc02和dc03仍然存在
甚至dc01被删除后,在dc02创建的文件,dc03仍然显示,即使是–volumes-from dc01
DockerFile
流程
dockerfile->docker build->docker run
基础
DockerFile关键字(保留字)
FROM
基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER
镜像维护者
RUN
镜像构建时执行的命令
EXPOSE
暴露端口号
WORKDIR
默认创建后进来的目录
ENV
构建镜像中设置环境变量
ADD
拷贝+解压文件
COPY
类似ADD,拷贝文件但不解压
VOLUME
容器数据卷,数据保存和持久化
CMD
指定容器启动时的命令
只有最后一个生效!
CMD会被docker run后面的参数替换
ENTRYPOINT
和CMD一样,但不会被docker run后面的参数替换
ONBUILD
被继承后执行此段代码