docker:虚拟化打包技术

251 阅读3分钟

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条容器日志

学习链接