Docker 教程
Docker 简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
为什么要使用 Docker?
更高效的利用系统资源
更快速的启动时间
一致的运行环境
持续交付和部署
更轻松的迁移
更轻松的维护和扩展
Docker 与传统虚拟化的区别
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,而容器内的应用直接运行在宿主机的操作系统上。
容器不需要进行硬件虚拟以及操作系统虚拟,因此容器的性能开销极小。
Docker 属于操作系统层面的虚拟化技术。
容器与虚拟机的区别
容器是用户态的进程,而虚拟机是内核态的进程。
容器是不需要虚拟出一套硬件,不需要进行硬件虚拟以及操作系统虚拟,因此容器的性能开销极小。
容器是直接运行在宿主机的操作系统上,而虚拟机是运行在虚拟机监控器(VMM)上。
Docker 基本原理和概念
镜像(Image)
容器(Container)
仓库(Repository)
Docker 安装
Docker 官网
Docker 官方文档
Docker Hub
注意:Docker for Windows 要求系统打开 Hyper-V,而 VMware Workstation 和 VirtualBox 等虚拟机软件也需要使用到虚拟化技术,因此这些软件不能在同一台机器上同时运行。详见链接:Windows 下 Docker 与 VMware 共存
这里我选择在 Windows 系统下安装 VMware Workstation 虚拟机,然后在虚拟机中安装 Ubuntu 系统,再在 Ubuntu 系统中安装 Docker。套娃了属于是
1 | Ubuntu 22.04.2 LTS |
容器化和 Dockerfile
容器化是指将应用程序及其依赖,打包成一个镜像,运行时再通过这个镜像来创建容器,这样就实现了应用程序的容器化。
Dockerfile 是一个文本文件,用来配置镜像,Docker 根据 Dockerfile 的配置信息来构建镜像。
编写 Dockerfile 文件
执行 docker build 命令来构建镜像
执行 docker run 命令来创建并启动容器
实践
创建项目目录
HelloDocker在项目目录下创建
index.js文件
1 | conslone.log('Hello Docker!'); |
使用命令
node index.js来运行index.js文件,输出Hello Docker!。在项目目录下创建
Dockerfile文件
1 | FROM node:14.17.0-alpine3.13 |
使用命令
docker build -t hello-docker .来构建镜像使用命令
docker image ls来查看镜像列表使用命令
docker run hello-docker来创建并启动容器(可选) 使用命令
docker ps -a来查看容器列表(可选) 使用命令
docker rm -f <container-id>来删除容器(可选) 使用命令
docker rmi <image-id>来删除镜像(可选) 上传镜像到 Docker Hub
(可选) 在线运行镜像,使用 Docker Playground
DockerCompose
DockerCompose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务,然后使用一个命令,即可从 YML 文件配置中创建并启动所有服务。
Compose 可以在所有环境中工作:生产、阶段、开发、测试等。
docker-compose.yml 文件示例:
1 | version: "3.9" |
Compose 有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
Compose 的常用命令:
docker-compose up:创建并启动所有容器。docker-compose up -d:创建并启动所有容器,后台运行。docker-compose up --build:创建并启动所有容器,强制重新构建镜像。docker-compose up -d --build:创建并启动所有容器,后台运行,强制重新构建镜像。docker-compose ps:查看项目中的容器。docker-compose logs:查看容器日志。docker-compose logs -f:查看容器日志,实时输出。
参考链接:
Docker Compose
docker compose 配置文件 .yml 全面指南