简介

Docker是容器技术得一个代表,容器技术本质上是将程序隔离打包的一个技术,核心的容器化的技术已经出现很久了,但真正被大众化的使用,是因为Docker。

Docker很好的解决软件包装的一个问题,很好的理顺了开发和运维的环境的一些差异,使得开发和运维能够用同一个语言来沟通。另外还与现在比较流行的“持续集成”、“持续交付”、“微服务”等等概念都是相辅相成的。

主要分为下面几点:镜像与容器、容器存储、Registry、多容器App

什么是Docker

  • 官方:Docker是一个开源的项目,它可以用来将任何应用以轻量级的形式打包,来发布和运行
  • nodejs:Docker运行一个应用程序及其所有依赖以一种标准的单位来打包

可以粗糙的理解为轻量级的虚拟机,但又确实不是虚拟机:

mark

相比于虚拟机,Docker由于没有虚拟机这一层,会比虚拟机轻量级很多,启动速度,内存消化都会小很多

安装

对于windows安装,这里(链接)直接下载的EXE文件直接点击运行就自动装完了,什么配置都不需要。但这时安装 “docker for window” 的版本,阿里云官方建议是对于windows用户,建议通过安装“Docker Toolbox”来使用docker。

mark

完成后,打开命令行,输入docker info出现相关的信息,则为安装成功

这里会涉及到几个问题:

  • image是什么?(其实就是“镜像”)

Docker架构

mark

  • Docker_HOST:进行docker操作的宿主机,宿主机上运行着一个叫“Docker daemon”的核心程序,这个程序负责各种各样docker操作,比如下载docker镜像,运行docker容器。
    • Docker作为业界备受推崇的轻量级虚拟化容器管理引擎,其强大的后台能力全凭Docker Daemon
  • 客户端通过命令(比如:build、pull、run),将这些命令交给docker daemon,由docker daemon来做持续的操作
  • registry:daemon可以和registry交互,比如拖取一个image或push一个image,实际上是所有docker玩家共享docker镜像的服务

中文画法:

mark

客户端把命令送给守护进程,守护进程来拖取镜像、运行容器、和远端的镜像仓库进行交互等等

简单操作(配置镜像加速)

docker run niginx,命令执行后,报错:

mark

这是因为docker在运行一个 容器 之前,先会看本地有没有这个容器需要的image,如果没有,它会去从远端的registry去下载

最开始使用docker pull 镜像名称还可能报这样的错误:

mark

这个问题可以通过配置加速器解决—Docker 镜像加速器

mark


mark

注意

  • Docker在容器内所做为改动都是暂时的,即默认情况下,启动docker容器并对其做了一定更改后,再次重启这个docker容器的时候,之前的更改都会不见掉。怎么样才能保存呢?
    • 可以用commit命令来保存:docker commit -m "注释" 容器的id

简单命令

  • docker info
    • 查看docker信息
  • docker images
    • 查看本地的镜像
  • docker run nginx
    • 启动nginx服务
  • docker pull 镜像名称
    • 从dockerhub上pull 镜像
  • docker ps
    • 查看本机正在运行的docker的container
  • docker stop docker容器的id
    • 停止这个容器
  • docker run -it --rm -p 8888:8888 -v /c/Users/tingting/dropbox/code:/root/opt/workspace -v /c/Users/tingting/dropbox/data:/root/data tingtinglu/caffe_mxnet
    • 利用image运行container

“不是一个人在战斗”

用 Windows 跟着官方教程学 Docker 之一步一坑记