1、docker是一种轻量级虚拟机,专业说法为应用容器(application container)
Hyper-V、KVM、Xen、esxi是基于虚拟化硬件仿真机制
docker容器使用共享的操作系统
2、docker的好处
快速的交付应用程序(快,轻)
更容易部署和扩展
效率高
快速部署更简单的管理
3、docker是c/s结构。守护进程(docker daemon)作为server端,接受docker客户 端 (client)的请求,并处理(创建,运行,分发容器)
4、docker三大组件: docker仓库 存放镜像
docker镜像 创建容器,只读,不能超过127层
docker容器 可以被创建,运行,分发
5、docker的底层核心技术: namespaces 用来隔离各个容器
control groups 实现对资源的配额和度量
6、docker特性
文件系统隔离
资源隔离
网络隔离
日志记录
变更管理
交互式shell
7、docker镜像的命令
docker images (- -no-trunc) 显示本机的镜像
docker inspect 镜像名查看完整的docker信息
docker search 关键字 搜索合适的image(默认docker hub共有仓库上)
docker pull 镜像名 下载镜像
docker run –it 镜像名 /bin/bash 启动镜像(-t 分配伪终端,-i 交互式,–d 守护态运行 )
docker tag imageID 新镜像仓库:tag名 修改镜像标签
docker login 进入 docker push 镜像 上传镜像
docker rmi 镜像 移除本地镜像(需要先删掉这个image的仓库)
docker save –o 文件名 .tar 镜像仓库:tag 导出镜像
docker load - -input 文件名 载入镜像
8、docker容器命令
docker ps (-a) 查看容器(不加-a只查看在up状态的)
exit,logout,Ctrl+c 退出容器(关闭容器)
Ctrl p + Ctrl q 退出终端(容器还在运行)
docker start 将exit状态的容器启动
docker stop/kill 终止容器
docker restart 重启容器
docker inspect 容器名或ID 查看容器的信息
docker attach (--sig-proxy=false )容器ID 进入容器(允许 Ctrl +c退出)
docker exec –it 容器名/ID /bin/bash 进入容器
docker export [容器/ID] >[文件名] 导出容器
cat 容器 | docker import - 容器名 导入容器
docker rm 容器名/ID 删除容器
dockerrm $(docker ps –a -q) 批量删除
9、创建镜像
第一种:
先使用image启动容器
在容器中添加应用(例如:yum–y install mysql)
exit退出
docker commit –m “提交信息说明” –a “用户” 创建新镜像的容器的ID 新镜像 仓库:tag
第二种:
从dockerfile来创建image
10、Dockerfile分为4个部分: 基础镜像信息,维护者信息,镜像操作指令,容器启动时执行指令。
Dockerfile的13个基本指令
FROM (指定基础image)
MAINTAINER (指定镜像创建者的信息)
RUN (安装软件用)
RUN 命令 列:RUN echo hello
RUN [“exec”,”param1”] 列:RUN [“/bin/sh“,“-c","echo hello"]
CMD (设置容器启动是执行的操作)
CMD命令
CMD [“exec”,”param1”]
ENTRYPOINT (设置container启动是的执行的操作)
USER (设置container的用户)
EXPOSE (设置容器需要映射到宿主机的端口)
EXPOSE 22
docker run –p 宿主机端口:container端口 image 将container端口映射成宿主机端口
ENV (用于设置环境变量)
ENV <key> <value>
ADD (从本地复制文件到container的路径)
COPY (从本地复制文件到container的路径)
VOLUME (指定挂载点,使容器在停止的情况下文件依然保存在宿主机中)
VOLUME [“/tmp/data”]
可以先使用docker inspect查看容器信息,找到容器目录
WORKDIR (切换目录相当于cd)
ONBUILD (在下一个镜像中执行)