Docker 简述和常用命令汇总

发布 : 2015-12-09 分类 : Tools 浏览 :

Docker

1、背景

  • 诞生于2013年,基于Google的Go语言实现
  • 开源项目,代码托管于Github
  • 轻量级的操作系统虚拟化解决方案

2、技术原理

3、优势

  • 快速交付和部署
  • 更高的虚拟化性能和效率
  • 几乎全平台运行,迁移方便
  • 易于实现自动化管理

4、基本概念

4.1 镜像

  • 一个只读层被称为一个镜像,镜像是不会被改变的
  • 镜像不可写,So,镜像是无状态的
  • 每一个镜像都可能依赖于其他镜像,存在父镜像的概念
  • 一个没有任何父镜像的镜像,称之为基础镜像
  • 镜像的标识符为一个64位十六进制字符串
  • 每个镜像都由很多层次构成,Docker 使用 Union FS 将这些不同的层结合到一个镜像中去
  • 镜像用来创建容器

4.2 容器

  • 容器是从镜像创建的运行实例
  • 容器存在启动、开始、运行、停止、删除等状态
  • 因为镜像是只读的,所以容器在启动时,会创建一层可写层作为最上层
  • 容器是独立运行的,各个容器之间是相互隔离的

4.3 仓库

5、安装&使用

  • Linux内核版本不低于3.10

5.1 CentOS

  • 推荐使用CentOS7
  • 官方脚本 (sudo curl -sSL https://get.docker.com/ | sh)
  • 配置随服务启动 (sudo chkconfig docker on)

5.2 使用

  • 获取镜像 docker pull daocloud.io/ubuntu:14.04
  • 使用镜像,创建容器,运行 Bash 应用,输出 “Hello World”,之后终止容器

docker run ubuntu:14.04 /bin/bash echo “Hello WaHaHa”

6、数据管理

6.1 数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过Union FS,提供很多有用的特性。数据卷的使用,类似于Linux下的Mount

  • 数据卷可以在不同的容器之间共用
  • 对数据卷的修改是立马生效的
  • 对数据卷的更新,不会影响镜像
  • 容器停止运行的时候不会删除数据卷

6.2 数据卷容器

当需要在容器之间持续的共享数据的时候,最好使用数据卷容器。数据卷容器,其实就是一个正常的容器,专门用于提供数据卷供其他容器挂载。

7、网络

7.1 外部访问容器

容器运行的应用,如Nginx,需要开放对口供外部访问和调用,可以在启动运行是添加 -P 或 -p 参数来指定端口映射。

  • -P 参数,Docker 容器会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
  • -p 参数,指定端口映射到内部容器开放的网络端口

7.2 容器互联

端口映射并不是容器之间相互连接的唯一方式,Docker 的 Linking 系统允许同时连接和传输数据对多个容器。在使用 Linking 系统时,Docker 建议对容器进行命名,使用 –name 参数。建立容器之间的连接,使用 –link 参数。简要流程和关系

  • 运行一个 DB 容器,命名为 db (docker run -d –name db training/postgres)
  • 现在创建一个 web 容器 (docker run -d -P –name web –link db:db training/webapp python app.py)
  • 创建了 Link 连接的容器,源容器可以提供自身的信息给接收容器
  • 在本例中,web 作为接收容器,可以访问源容器 db 上的信息,而且我们并没有使用 -p 或者 -P 参数,Docker在两个容器之间创建了一个安全隧道,而不用 DB 容器暴漏端口

8、安全

  • 运行一个容器和核心是通过 Docker 服务端,服务的运行目前需要 Root 权限
  • 确保只有可信的用户才可以访问 Docker 服务
  • Docker 允许在主机和容器之间共享文件夹,很容易让容器突破资源限制
  • 用户可以使用现有工具,比如 Apparmor, SELinux, GRSEC 来增强安全性
  • Docker Security

9、Dockerfile

Dockerfile 允许用户创建自定义的镜像,Dockerfile 由一行行的命令语句组成,支持以 # 开头的注释行

Dockerfile 分为四部分:基础镜像部分、维护者信息、镜像操作指令和容器启动时执行命令

  • Mongodb Dockerfile
  • 指令的一般格式为 INSTRUCTION arguments,包括 FROM、MAINTAINER、RUN等

根据 Dockerfile 构建镜像

  • docker build dockerfile/dockerfile

10、应用场景

  • Web应用程序的自动化打包和发布
  • 自动化测试和持续集成、发布
  • Paas环境
  • 在生产环境部署和调整数据库或其他应用

11、常用命令

  • 列出本地已有的镜像 docker images
  • 查看正在运行的镜像 docker ps
  • 在Docker Index 中搜索镜像 docker search nginx
  • 获取镜像 docker pull nginxdocker pull dl.dockerpool.com:5000/nginx
  • 启动容器 docker run ubuntu:14.04 /bin/bash echo “Hello WaHaHa”
  • 后台运行 docker run -d ubuntu /bin/sh -c “while true; do echo hello world; sleep 2; done”
  • Using the Command Line
本文作者 : Shiyf
原文链接 : https://www.shiyf.me/passages/Docker/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹