Docker学习(一)

Docker

  1. 什么是Docker?
    Docker 是个开源的应用容器引擎, 基于 Go语言 并遵从Apache2.0协议开源.
    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中, 然后发布到任何流行的Linux机器上, 也可以实现虚拟化.
    容器是完全使用沙箱机制, 相互之间不会有任何接口(类似iPone的 app), 更重要的是容器性能开销极低.

  2. 谁适合阅读本教程?
    适合运维工程师及后端开发人员.

  3. 阅读本教程前, 您需要了解的知识
    你需要掌握Linux常用命令. 可通过linux教程来学习想着命令.

  4. Docker的应用场景
    . Web应用的自动化打包和发布
    . 自动化测试和持续集成、发布
    . 在服务环境中部署和调整数据库或其他的后台应用
    . 从头编译或者扩展现有的OpenShift或Cloud Foundry 平台来搭建自己的PaaS环境.

  5. Docker的优点
    1). 简化程序:
    Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中, 然后发布到任何流行的Linux机器上, 便可以实现虚拟化. Docker改变了虚拟化的方式, 使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是Docker的最大优势, 过去需要用数天乃至数周的任务, 在Docker容器的处理下, 只需要数秒就能完成。

2). 避免选择恐惧症
如果你有选择恐惧症, 还是资源患者. Docker帮你打包你纠结!
比如Docket镜像: 其中包含了运行环境和配置, 所以Docker可以简化部署多种应用实例工作. 比如 Web应用, 后台应用,数据库应用, 大数据应用(比如Hadoop集群), 消息队列等待都可以打包成一个镜像部署.

3). 节省开支:
一方面, 云计算时代到来,使开发者不必为了追求效果而配置高额的硬件, Docker改变了高性能必然高价格的思维定势. Docker与云的结合, 让云空间得到充分的利用. 不仅解决了硬件管理的问题,也改变了虚拟化的方式.

Docker 架构
Docker 使用客户端-服务器(C/S)架构模式, 使用远程API来管理和创建Docker容器.
Docker 容器 通过Docker镜像来创建.
容器和镜像的关系类似于面向对象中的对象与类.

Docker 面向对象
容器 对象
镜像

Client( Docker客户端 ) | Hosts( Docker 主机 ) | Registries( Docker仓库 )

docker local host Docker hub
daemon repository 1
container 1 image 1 image 1
container 2 image 3 image 2
container 3 repository 2
remote host private registry
daemon repostory
Docker machine container 3 image 3 image 5
container 5 image 5 image 5
container 6 image 6 image 6

Docker镜像( Images ) | Docker镜像是用于创建Docker容器的模板
Docker容器( Container ) | 容器是独立运行的一个或一组应用
Docker客户端( Client ) | Docker客户端通过命令行或其他工具使用Docker API与Docker的守护进程通信.
Docker主机(Hosts) | 一个物理或虚拟的机器用于执行Docker守护进程和容器
Docker仓库(Registry) | Docker仓库用来保存镜像, 可以理解为代码控制中的代码仓库. Docker Hub提供了庞大的镜像集合供使用.
Docker Machine| Docker machine是一个简化Docker安装的命令行工具, 通过一个简单的命令行即可在相应的平台上安装Docker, 比如Virtual Box, Diigital Ocean, Microsoft Azure.

Docker的安装: CentOS Docker安装
Docker支持以下的CentOS版本:
. CentOS 7( 64-bit )
. CentOS 6.5 ( 64-bit ) 或更高的版本

  1. 前提条件:
    目前, CentOS仅发行版本中的内核支持Docker.
    Docker运行在 CentOS 7上, 要求系统为64位, 系统内核版本为3.10以上.
    Docker运行在CentOS 6.5或更高的版本上, 要求系统为64位, 系统内核版本为 2.6.32-431或更高版本.

  2. 使用yum 安装( CentOS 7)
    Docker要求CentOS系统的内核版本高于3.10, 查看前提条件来验证你的CentOS版本是否支持 Docker
    通过 uname -r 命令看系统当前内核版本

uname -r
  1. 安装Docker
    从2017年3月开始 Docker在原来的基础上分为两个分支版本: Docker CE 和 Docker EE.
    Docker CE即社区免费版本, Docker EE即企业版, 强调安全, 但需付费使用.

我们介绍Docker CE的安装使用.

移除旧的版本:

sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common   \
                docker-latest   \
                docker-latest-logrotate \
                docker-logrotate    \
                docket-selinux  \
                docker-engine-selinux   \
                docket-engine
                

安装一些必要的系统工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum缓存:

sudo yum makecache fast

安装Docker-ce:

sudo yum -y install docker-ce

启动 Docker后台服务:

sudo service docker start

测试运行hello-world

docker run hello-world

使用脚本安装Docker

  1. 使用sudo或root权限登录 CentOS
  2. 确保yum 包更新到最新
sudo yum update
  1. 执行Docker安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

执行这个脚本会添加docker.repo源并安装docker

  1. 启动Docker进程
sudo service docker start
  1. 验证docker是否安装成功并在容器中执行一个测试的镜像
sudo docker run hello-world
docer ps 

到此, Docker安装完成.

镜像加速
鉴于国内网络问题, 后续摘取Docker镜像十分缓慢, 我们可以配置加速器来解决, 比如网易的镜像地址:
http://hub-mirror.c.163.com

新版的Docker使用 /etc/docker/daemon.json( Linux ) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。
可以该配置文件中加入(没有该文件的话, 请先建一个):

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

删除 Docker CE
执行以下命令来删除 Docker CE:

sudo yum remove docker-ce
sudo rm -rf /var/lib/docker

Docker 镜像使用
当运行容器时, 使用的镜像如果在本地不存在, docker就会自动从镜像仓库中下载, 默认是从 Docker Hub公共镜像源下载
我们来学习:
. 管理和使用本地Docker主机镜像
. 创建镜像

1. 列出镜像列表:

列出本地主机上的镜像

docker images 

REPOSITORY | TAG | IMAGE ID | CREATED | SIZE
centos | 6.8 | 90b555111e0 | 3 days ago | 233.3 MB
centos | 6.10 | ff1b555111e0 | 2 days ago | 238.3 MB

各个选项说明:
. REPOSITORY: 表示镜像的仓库源
. TAG: 镜像的标签
. IMAGE ID: 镜像ID
. CREATEED: 镜像创建时间
. SIZE: 镜像大小

同一仓库源可以有多个 TAG, 代表这个仓库源的不同个版本, 如CentOS 仓库源时, 有6.8, 6.10等多个不同的版本, 我们使用REPOSITORY:TAG来定义不同的镜像.
所以, 我们如果使用版本为6.8的CentOS系统镜像来运行容器时, 命令如下:

docker run -t -i centos:6.8 /bin/bash

若用6.10的则为:

docker run -t -i centos:6.10 /bin/bash

如果你不指定一个镜像的版本标签,例如你只使用 centos, docker 将默认使用 centos:latest镜像

2. 获取一个新的镜像

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像. 我们可以使用docker pull 命令来下载它.

docker pull centos:6.10

假定....

jin@jinLab:~$ docker pull centos:6.10
13.10: Pulling from library/centos
6599cadaf950: Pull complete 
23eda618d451: Pull complete 
f0be3084efe9: Pull complete 
52de432f084b: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for centos:6.10

下载完成后, 我们可以直接使用这个镜像来运行容器.

3. 查找镜像

我们可以从Docker Hub网站来搜索镜像, Docker Hub 网址为: https://hub.docker.com/
我们也可以使用docker search 命令来搜索镜像. 比如我们需要一个httpd的镜像来作为我们的web服务. 我们可以通过docker search命令来搜索httpd 来寻找适合我们的镜像.

docker search httpd

NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否docker官方发布

4. 拖取镜像

我们决定使用上图中的 httpd 官方版本的镜像, 使用命令 docker pull 来下载镜像

docker pull httpd
jin@jinLab:~$ docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
8b87079b7a06: Pulling fs layer 
a3ed95caeb02: Download complete 
0d62ec9c6a76: Download complete 
a329d50397b9: Download complete 
ea7c1f032b5c: Waiting 
be44112b72c7: Waiting

下载完成后, 我们就可以使用这个镜像了

docker run httpd

你可能感兴趣的:(Docker学习(一))