Windows10下Docker简明教程

概述

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

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

内部结构

mark

Docker使用C/S架构模式,Docker客户端会与Docker守护进程通信。Docker守护进程会处理复杂繁重的任务,例如建立、运行、发布你的 Docker 容器。Docker 客户端和守护进程可以运行在同一个系统上,当然你也可以使用 Docker 客户端去连接一个远程的 Docker 守护进程。Docker 客户端和守护进程之间通过 socket 或者 RESTful API 进行通信。

Docker分为三种部件:

  • Docker镜像-Docker Images
  • Docker容器-Docker Containers
  • Docker仓库-Docker Registeries

Docker镜像

Docker运行容器前需要本地存在对应的镜像。Docker镜像可以用来创建Docker容器,一个镜像可以包含一个完整的操作系统环境和用户需要的其他应用程序。

Docker镜像是只可读的,一个镜像可以创建多个容器。

通俗说,Images是已经打包好的环境文件,我们运行的时候把Images加载运行在本地容器中,你在这个容器中可以进行一些修改重新打包成新镜像上传。

分层存储

因为镜像包含操作系统完整的root文件系统,其体积往往是巨大的,因此Docker设计时,就充分利用Union FS技术,将其设计为分层存储的架构。

分层存储的特征使得镜像并非像一个ISO类似的打包文件,而是由一组文件系统组成。

Docker容器

Docker利用容器来开发、运行应用。容器是镜像创建的实例,可以被开始、启动、停止、删除。每个容器都是相互隔离的。

Docker仓库

仓库是集中存放镜像文件的场所。每个仓库中包含了多个镜像,每个镜像有不同的标签。

最大的公开仓库是DockerHub),因为墙的原因,可以使用DaoCloud阿里云)加速下载。

安装

  1. 安装之前,需要开启Windows10的Hpyer-V

    控制面板-程序-启用或关闭Windows功能

    mark

  1. 本文以Docker Community Edition为例,开启Hpyer-V后直接安装Docker Community Edition即可。

    安装成功后,运行cmd,执行docker version,安装成功则显示下图

    mark

设置Docker

任务栏鲸鱼图标右键-Settings打开设置界面

mark

  • Shared Drivers:可以将主机(即Windows)中的驱动器共享到Docker Container中
  • Advanced:用于配置运行Docker Daemon的虚拟机环境的CPU和内存和镜像路径
  • Network:配置Docker的网络环境
  • Proxies:代理的配置
  • Docker Daemon:使用JSON格式的设置,对Docker Daemon进行设置,类似于在Linux中利用conf文件对Docker设置。

修改CPU数目及内存

点击Advanced,如下图修改参数即可

mark

修改代理

Docker Hub速度较慢,修改为阿里云镜像。

登陆容器Hub服务,找到以下链接

mark

点击Daemon设置镜像,直接在Registry mirrors中填写阿里云的镜像地址,点击Apply重启应用即可。

mark

更改镜像默认存储路径

打开Docker的Settings,点击Advanced,在Images and volumes VHD location选择新的路径。重启后即可更新设置。

mark

常用命令

查看Docker版本

docker version

查看本机已安装镜像

docker images

查看所有容器

docker ps -a

拉取镜像

docker pull Name:Tag

【例】

docker pull sameersbn/redmine:latest

删除单个容器

docker rm Name/ID

删除所有的容器

docker rm docker ps -a -q

停止、启动、杀死一个容器

docker stop Name/ID
docker start Name/ID
docker kill Name/ID

参考