目录
Docker 教程
Docker 是一个开源的应用容器引擎,允许开发者打包他们的应用以及依赖包(例如库、配置文件、环境变量等)到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
1. 安装 Docker
Linux 系统
以 Ubuntu 为例:
-
更新系统:
深色版本
1sudo apt-get update
-
安装必要的软件包:
深色版本
1sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
-
添加 Docker 的官方 GPG 密钥:
深色版本
1curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
设置稳定仓库:
深色版本
1sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-
更新 apt 包索引:
深色版本
1sudo apt-get update
-
安装 Docker CE(Community Edition):
深色版本
1sudo apt-get install docker-ce
-
验证安装:
深色版本
1sudo systemctl status docker
-
加入
docker
用户组(可选,允许非 root 用户运行 Docker 命令):深色版本
1sudo usermod -aG docker $USER
登出并重新登录生效。
macOS 和 Windows
-
下载 Docker Desktop: 访问 Docker 官网下载页面 (Docker Desktop: The #1 Containerization Tool for Developers | Docker) 下载适合您操作系统的 Docker Desktop。
-
安装 Docker Desktop:
- 双击下载的安装包并按照提示安装。
- 启动 Docker Desktop。
2. 基本概念
- 镜像 (Image):Docker 镜像是创建容器的基础,相当于应用程序的模板。
- 容器 (Container):容器是从镜像创建的运行实例。每个容器都是相互隔离的、安全的封装。
- 仓库 (Repository):存放镜像的地方,分为公共仓库(如 Docker Hub)和私有仓库。
- Dockerfile:一个文本文件,用于定义构建 Docker 镜像的指令。
3. 基本命令
拉取镜像
bash
深色版本
1docker pull <image_name>
列出本地镜像
bash
深色版本
1docker images
运行容器
bash
深色版本
1docker run -it --name <container_name> <image_name>
列出正在运行的容器
bash
深色版本
1docker ps
查看所有容器(包括已停止的)
bash
深色版本
1docker ps -a
停止容器
bash
深色版本
1docker stop <container_id_or_name>
删除容器
bash
深色版本
1docker rm <container_id_or_name>
删除镜像
bash
深色版本
1docker rmi <image_id_or_tag>
4. 构建镜像
使用 Dockerfile 来定义镜像构建过程:
dockerfile
深色版本
1# 使用基础镜像
2FROM ubuntu:latest
3
4# 设置工作目录
5WORKDIR /app
6
7# 复制文件到容器
8COPY . .
9
10# 安装依赖
11RUN apt-get update && apt-get install -y <package>
12
13# 暴露端口
14EXPOSE 80
15
16# 设置容器启动命令
17CMD ["./start.sh"]
构建 Docker 镜像:
bash
深色版本
1docker build -t <image_name> .
5. Docker Compose
Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。
创建 docker-compose.yml
文件:
yaml
深色版本
1version: '3'
2services:
3 web:
4 image: nginx
5 ports:
6 - "8080:80"
7 db:
8 image: postgres
9 environment:
10 POSTGRES_PASSWORD: example
启动服务:
bash
深色版本
1docker-compose up -d
停止服务:
bash
深色版本
1docker-compose down
6. Docker Swarm
Docker Swarm 是 Docker 的原生集群管理系统,用于协调 Docker 容器在多个主机上的调度和部署。
初始化 Swarm:
bash
深色版本
1docker swarm init
加入节点:
bash
深色版本
1docker swarm join --token <token> <master_ip>:<port>
部署服务:
bash
深色版本
1docker service create --replicas 3 nginx:latest
7. Docker 网络
默认情况下,Docker 容器运行在一个桥接网络中,但可以通过自定义网络来更好地控制容器间的通信。
创建网络:
bash
深色版本
1docker network create mynetwork
连接容器到网络:
bash
深色版本
1docker run -it --name mycontainer --net mynetwork nginx:latest
8. Docker 安全
- 最小权限原则:仅授予容器必要的权限。
- 使用非 root 用户:避免以 root 用户身份运行容器。
- 定期更新镜像:及时更新基础镜像和应用程序。
9. Docker 容器持久化
使用卷(Volumes)来持久化数据:
创建卷:
bash
深色版本
1docker volume create myvolume
挂载卷:
bash
深色版本
1docker run -v myvolume:/data mysql:latest
10. Docker 容器监控
使用工具如 Prometheus 和 Grafana 来监控 Docker 容器的性能指标。
11. Docker 与 Kubernetes
Kubernetes 是一个用于管理和编排容器化应用程序的平台。Docker 可以作为 Kubernetes 的容器运行时。
12. 实践案例
使用 Docker 构建一个简单的 Web 应用:
-
创建 Dockerfile:
深色版本
1FROM nginx:latest 2COPY index.html /usr/share/nginx/html/index.html
-
创建
index.html
:深色版本
1<h1>Hello, Docker!</h1>
-
构建镜像:
深色版本
1docker build -t myweb .
-
运行容器:
深色版本
1docker run -p 8080:80 myweb
-
访问 Web 应用: 访问 http://localhost:8080
总结
Docker 提供了一种轻量级、可移植的容器化解决方案,使得开发者能够轻松地打包、发布和运行应用程序。通过使用 Docker,可以简化开发流程,提高开发效率,并且使得应用程序在不同环境中具有良好的一致性和可移植性。通过本教程,你应该能够掌握 Docker 的基本使用方法,并能够利用 Docker 构建和运行自己的容器化应用程序。