docker:虚拟化打包技术
docker Centos6.9安装:
yum -y install get.docker.com/rpm/1.7.1/c…
service docker start
echo ' { "registry-mirrors": [ "registry.docker-cn.com", "hub-mirror.c.163.com", "docker.mirrors.ustc.edu.cn" ] } '>> /etc/docker/daemon.json
service docker restart
docker基本概念
-
仓库(registry):存放镜像的地方,可以是本地可以是远程,可以是私有可以是共有,类似github
-
镜像(images):类似于编程语言中的类的概念
-
容器(container):镜像的实例化,一个镜像可以实例化多个容器
优点:
-
快速部署:短时间内可以部署成百上千个应用,更快速交付到线上
-
高效虚拟化:不需要额外hypervisor支持,基于linux内核实现应用虚拟化,相比虚拟机大幅提高性能和效率
-
节省开支:提高服务器利用率,降低IT支出
-
简化配置:将运行环境打包保存至容器,使用时直接启动即可
-
环境统一:将开发,测试,生产的应用运行环境进行标准化和统一,减少环境不一样带来的各种问题
-
快速迁移和扩展:可实现跨平台运行在物理机、虚拟机、公有云等环境,良好的兼容性可以方便将应用从A宿主机迁移到B宿主机,甚至是A平台迁移到B平台
缺点:
- 隔离性:多个容器共用宿主机的内核,各应用之间的隔离不如虚拟机彻底
Dockerfile:文本形式,基于一个基础镜像,根据指令,使用docker build 构建一个镜像,指令大写,一行一个操作
-
FROM:指定一个基础镜像,如果本地有就直接用,没有就去远程dockerHub pull到本地
-
RUN:运行shell脚本
-
ENV:设置环境变量,使用范围为镜像内
-
ARG:设置环境变量,使用范围为Dockerfile内
-
CMD:为镜像启动一个进程,该进程结束,容器结束;如果Dockerfile有多个CMD,只有最后一个生效
-
ENTRYPOINT:与CMD大致相同,区别在于如果CMD与ENTRYPOINT同时使用,CMD为ENTRYPOINT的参数
-
COPY: 复制指令,复制文件或者目录到容器里指定路径
-
ADD: 跟COPY差不多,但ADD时对于压缩了的文件会自动解压
-
WORKDIR:指定进入容器时当前工作目录
-
EXPOSE:指定容器端口
-
VOLUME:挂载匿名数据卷, 在启动容器时忘记挂载数据卷,会自动挂载到匿名卷
docker命令
-
build -t: 根据dockerfile构建docker镜像
-
images:查看镜像
-
ps:查看正在运行的容器
- -a 查看所有容器
-
stop:停止容器
-
start:启动容器
-
restart:重启容器
-
run:run一个容器,如果没有这个镜像,就去远程pull再启动
-
-it:进入容器,打开一个用户端,需指定类型 bash或其他
-
-d:后台运行
-
-p:映射指定端口
-
-P:映射随机可用端口
-
-
exec:容器运行时,进入容器
- -it:进入容器,打开一个用户端,需指定类型 bash或其他
-
rm:删除容器
-
rmi:删除镜像
-
pull:拉取镜像
-
push:推镜像
-
search:搜索镜像
-
inspect:查看正在运行的容器的属性
-
kill:停止容器
-
version:查看版本
-
info:查看docker系统信息
-
commit:将容器提交成一个镜像
-
top:查看容器中的进程运行信息
-
tag:给容器打标签
-
save: 将指定镜像保存成 tar 归档文件
-
load: 导入使用 save 命令导出的镜像
-
logs:查看容器的日志
- --tail:列出最新的N条容器日志