Kmoon Blog

Docker:越使用越喜欢的容器化技术

约 852 字 2 min

Reference:40分钟的Docker实战攻略

Docker 是目前最成熟高效的应用服务容器化部署技术,简单来说就是用容器化技术给应用程序封装独立的运行环境,每个运行环境就是一个容器,运行容器的计算机就是宿主机。

Docker vs 虚拟机

Docker 容器与虚拟机的最大区别就是 Docker 容器之间共用同一个系统内核,而每个虚拟机都包含一个操作系统的完整内核。

所以 Docker 容器比虚拟机更小、更轻量化,启动速度更快

镜像与容器

Docker 最核心的两个概念就是镜像和容器,镜像是容器的模板,就像软件的安装包,而容器是安装出来的软件。我们可以将安装包分享给别人让别人也可以安装我们的软件。

另一个概念是镜像仓库,就是用来存储和分享 Docker 镜像的仓库,每个人都可以上传分享自己的镜像,也可以从仓库拉取别人上传分享的镜像。Docker 官方的镜像仓库是Docker Hub:

Docker 通常来说是基于 Linux 的容器化技术,Windows 和 Mac 系统都是虚拟了一个 Linux 子系统来运行 Docker。

Docker 命令

docker pull

跟我们使用的 git pull 命令差不多,用于从镜像仓库拉取镜像。

# docker pull 仓库地址/命名空间/镜像名称:标签(版本号)

docker pull docker.io/library/nginx:latest

docker images

列出所有下载的镜像

docker rmi

remove image,即删除镜像,后面跟镜像名称或者镜像 ID。

docker run

使用镜像创建并运行容器,后面跟镜像名称或 ID。

docker ps

查看运行的容器

docker stop/start

停止/启动容器

Docker 技术原理

Docker 利用了 Linux 内核的两大原生功能实现容器化:

Cgroups

用来限制和隔离进程的资源使用,可以为每个容器设定 CPU、内存、网络带宽等资源的使用上限,确保了一个容器的资源消耗不会影响到宿主机和其他正在运行的容器。

Namespaces

用来隔离进程的资源视图,使得容器只能看到自己内部的进程 ID、网络资源、文件目录,而看不到宿主机的,所以容器本质还是一个特殊的进程。

Dockerfile

制作镜像的图纸

docker build

Docker 网络模式

Bridge 桥接模式

默认是 Bridge 桥接模式

Host 模式

#Docker