Docker
基础
- 镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。
- 容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
- 仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。
source ---> Docker面试题(史上最全 + 持续更新) - 疯狂创客圈 - 博客园 (cnblogs.com)
从一个问题入手
Docker 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)
为了让软件跑起来,用户必须保证两件事:
①操作系统的设置
②各种库和组件的安装
但是,老旧模块不兼容,换机就得重配一遍的问题普遍存在,费时且扰人心态。
虚拟机(virtual machine)就是带环境安装的一种解决方案。但其也有相应的缺点:
①资源占用多
②冗余步骤多
③启动慢
为了应对这些缺陷,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离
由于是进程级别的,其拥有以下优势:
①资源占用少
②体积小
③启动快
其中,Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。
如此,Docker便可用来:
①提供一次性的环境
②提供弹性的云服务
③组件微服务架构
Docker的安装
-
Windows下载路径: Windows | Docker Docs
-
验证是否安装成功:
$ docker version # 或者 $ docker info
-
将用户加入Docker组,为方便操作,因为Docker需要用户有sudu权限
$ sudo usermod -aG docker $USER
-
image仓库换源
打开
/etc/default/docker
文件(需要sudo
权限),在文件的底部加上一行并重启。DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
-
一些常用命令
# service 命令的用法 $ sudo service docker start # systemctl 命令的用法 $ sudo systemctl start docker # 列出本机的所有 image 文件。 $ docker image ls # 删除 image 文件 $ docker image rm [imageName]
上手实例
面试题
source ---> 10道不得不会的Docker面试题 - 知乎 (zhihu.com)
- 1. 什么是 Docker 容器?
- 2. Docker 和虚拟机有什么不同?
- 3. 什么是 DockerFile?
- 4. 使用Docker Compose时如何保证容器A先于容器B运行?
- 5. 一个完整的Docker由哪些部分组成?
- 6. docker常用命令
- 7. 描述 Docker 容器的生命周期。
- 8. docker容器之间怎么隔离?