初识Docker
简介
Docker是容器技术得一个代表,容器技术本质上是将程序隔离打包的一个技术,核心的容器化的技术已经出现很久了,但真正被大众化的使用,是因为Docker。
Docker很好的解决软件包装的一个问题,很好的理顺了开发和运维的环境的一些差异,使得开发和运维能够用同一个语言来沟通。另外还与现在比较流行的“持续集成”、“持续交付”、“微服务”等等概念都是相辅相成的。
主要分为下面几点:镜像与容器、容器存储、Registry、多容器App
什么是Docker
- 官方:Docker是一个开源的项目,它可以用来将任何应用以轻量级的形式打包,来发布和运行
- nodejs:Docker运行一个应用程序及其所有依赖以一种标准的单位来打包
可以粗糙的理解为轻量级的虚拟机,但又确实不是虚拟机:
相比于虚拟机,Docker由于没有虚拟机这一层,会比虚拟机轻量级很多,启动速度,内存消化都会小很多
安装
- 官网
- 现在有了社区版和企业版,区别可以看一下这里–Docker 社区和企业版出现了
对于windows安装,这里(链接)直接下载的EXE文件直接点击运行就自动装完了,什么配置都不需要。但这时安装 “docker for window” 的版本,阿里云官方建议是对于windows用户,建议通过安装“Docker Toolbox”来使用docker。
完成后,打开命令行,输入docker info
出现相关的信息,则为安装成功
这里会涉及到几个问题:
- image是什么?(其实就是“镜像”)
Docker架构
- 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镜像的服务
中文画法:
客户端把命令送给守护进程,守护进程来拖取镜像、运行容器、和远端的镜像仓库进行交互等等
简单操作(配置镜像加速)
docker run niginx
,命令执行后,报错:
这是因为docker在运行一个 容器 之前,先会看本地有没有这个容器需要的image,如果没有,它会去从远端的registry去下载
最开始使用docker pull 镜像名称
还可能报这样的错误:
这个问题可以通过配置加速器解决—Docker 镜像加速器
注意
- Docker在容器内所做为改动都是暂时的,即默认情况下,启动docker容器并对其做了一定更改后,再次重启这个docker容器的时候,之前的更改都会不见掉。怎么样才能保存呢?
- 可以用commit命令来保存:
docker commit -m "注释" 容器的id
- 可以用commit命令来保存:
简单命令
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