Docker 怎么学?镜像、容器、Dockerfile、Docker Compose 全套教程都在这
Docker 教程一共 43 篇,覆盖镜像与容器、Dockerfile、Docker Compose 以及常用中间件部署。想系统学 Docker,按这个目录从安装、镜像加速、常用命令一路看到实战部署就够了。下面把整套教程的核心内容按问题整理出来,方便按需查阅。
Docker 是什么?为什么要用它?
Docker 是一个开源的应用容器引擎,基于 Go 语言开发。它可以让开发者在构建应用时,把应用和依赖的环境一起打包到容器中,然后很方便地发布到任意平台(Linux / Windows),实现快速部署。
Docker 镜像和容器是什么关系?
- 镜像:Docker 三个基本概念之一,是运行容器的前提。镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还有其他内容。仓库是存放镜像的场所。
- 容器:通过 Docker 镜像运行的实例。镜像和容器的关系就像面向对象程序设计中的类和实例——镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
Docker 各系统怎么安装?
- CentOS 安装 Docker:支持 64 位 CentOS 版本,内核版本不低于 3.10,安装前需先卸载旧版本 Docker。
- Ubuntu 安装 Docker:需要满足前置条件,支持 x86_64(或 amd64)、armhf、arm64、s390x CPU 架构。
- MacOS 安装 Docker:两种方式,一是使用 Homebrew 安装,二是手动下载安装包安装。
国内下载镜像太慢怎么办?
Docker 默认从官方 Docker Hub 下载镜像,由于服务器在国外的缘故,国内用户下载会非常慢。解决办法是配置国内镜像加速器,可选阿里云加速器、DaoCloud、网易加速器、百度云加速器等,教程中演示的是阿里云镜像加速器的配置。
Docker 常用命令有哪些?
镜像相关:
- 查看镜像信息:
docker images或docker image ls - 搜索镜像:
docker search [option] keyword,比如搜 mysql 相关镜像 - 拉取下载镜像:默认从 Docker Hub 下载,也可自定义配置镜像仓库地址
- 删除镜像:两种方式,通过标签删除、通过 ID 删除
- 导出镜像:
docker save,导出成 tar 包后可分享给别人导入 - 上传镜像:需先注册 Docker Hub 账号(https://hub.docker.com),再上传
容器相关:
- 查看容器:
docker ps查看运行中的容器,docker ps -a查看所有容器 - 启动容器:两种方式,基于镜像新建容器并启动,或将 exited 状态的容器重新启动
- 停止关闭容器:
docker container stop,通过容器 ID 或容器名称都可以 - 重启容器:
docker restart [container ID or NAMES] - 删除容器:
docker container rm,删除已停止运行的容器 - 进入容器:两种方式,
docker exec和docker attach - 导出容器:
docker export 9e8d11aeef0c > redis.tar,tar 包快照存于当前目录
Docker 数据卷怎么用?
- 数据卷:一个可供一个或多个容器使用的特殊目录,用于持久化数据以及共享容器间的数据,以正常的文件或目录形式存在于宿主机上。生命周期独立于容器,删除容器时数据卷不会被删除。
- 数据卷容器:如果有需要持续更新的数据要在容器之间共享,最佳实践是创建数据卷容器。它其实就是一个正常的 Docker 容器,专门用于提供数据卷供其他容器挂载。
- 备份、恢复、迁移:使用
--volumes-from命令创建一个加载 dbdata 的容器卷容器来操作。
Dockerfile 是什么?怎么构建镜像?
Dockerfile 是一个用来构建 Docker 镜像的文本文件,文件中包含一行行指令(Instruction)。要熟练使用 Dockerfile 构建镜像,需要熟悉常用指令,除了 COPY、ADD,Dockerfile 还额外提供了十多个指令。教程中上手实操的是定制一个 Nginx 镜像,把 Nginx 默认首页欢迎语改为 Hello, Nginx by Docker。
Docker Compose 是干什么的?
Docker Compose 是 Docker 官方的开源项目,能够实现对 Docker 容器集群的快速编排,以保证快速部署分布式应用。支持 Linux、MacOS、Windows 10 以及更高版本等主流操作系统安装。教程中包含 docker-compose 命令大全,以及一个实战:用 Docker Compose 搭建一个简单网站,实现每当用户访问时页面显示总访问次数。
用 Docker 能部署哪些中间件?
教程覆盖了以下中间件的安装(均为图文教程):
- MySQL:以安装 5.7 版本为例,执行
docker pull mysql:5.7,下载完成后用docker images检查 - Nginx:执行
docker pull nginx:1.19.4,并反向代理到后台 Web 服务 - Redis:搭建本地 Redis 环境,用于分布式缓存
- Zookeeper:搭建单机版环境,用于 Leaf-snowflake(基于雪花算法)模式获取分布式 ID
- Cassandra:Apache Cassandra 是开源的分布式 NoSQL 数据库管理系统,专为处理大规模数据量和高写入频率的工作负载设计
- Jenkins:开源的持续集成工具,帮助开发团队自动化构建、测试和部署软件项目
- Minio:对象存储,可存储图片、文件、视频等,教程中用作图床服务
另外还有一篇《Docker Nginx 配置安装 SSL 证书》,教如何为 Nginx 配置 SSL 证书,让网站支持 Https 访问。
k8s 和 Docker 的区别是什么?
k8s 和 Docker 并不是一个维度的东西,不具有可比性,它们之间是相互依存的关系。Docker 是容器引擎,而 k8s 是用来编排 Docker 等容器的协调器。
这套 Docker 教程一共包含哪些内容?
整套教程共 43 篇文章,目录包括:Docker 镜像加速器(配置阿里云)、CentOS 安装 Docker、Docker Compose 命令大全、Docker Compose 实战 web 服务、Docker 容器、Docker 删除容器、Docker 拉取&下载镜像、Docker 进入容器命令、Docker 导出&导入容器、Docker 镜像、Docker 安装 Cassandra 数据库、Docker Compose 安装与卸载、Docker 安装 Jenkins、Docker 安装 Minio 分布式存储、Docker 安装 MySQL、Docker 安装 Nginx、Docker 安装 Redis、Docker 安装 Zookeeper、Docker 查看镜像信息、Docker Nginx 配置安装 SSL 证书(支持 Https 访问)、Docker 查看容器、Docker 删除镜像、Docker 仓库、Docker 重启容器、Docker 启动容器、Docker 导出&导入镜像、Docker 搜索镜像、Docker 停止&关闭容器、Docker 常用命令大全、Docker 上传镜像、Docker 使用数据卷容器备份恢复迁移数据卷、Docker 数据卷容器、Docker 数据卷、Dockerfile 制作构建镜像、Dockerfile 常用指令汇总、MacOS 安装 Docker、Ubuntu 安装 Docker、k8s 和 Docker 的区别是什么、Docker Compose 是干什么的、Docker 是干什么的、什么是 Dockerfile。
想系统学 Docker,从这套 43 篇的容器化实战教程入手,按目录顺序看就能把镜像、容器、Dockerfile、Docker Compose 和常用中间件部署全部搞定。
本文是速览版,完整教程看这篇:Docker 教程,原文含完整代码示例与推导过程。
