主题
Docker
Docker是一个开源的应用容器引擎,它可以让开发者打包应用及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
基本概念
- 容器:Docker的核心概念,它是轻量级、可移植的执行环境,用来运行应用程序及其依赖。
- 镜像:Docker镜像是创建容器的基础,类似虚拟机的快照,包含需要运行的程序、库、工具、配置文件等。
- 仓库:集中存放镜像的地方,可以理解为代码仓库,Docker Hub是最常用的公共仓库。
安装Docker
以Ubuntu系统为例,安装Docker可以通过以下命令:
bash
sudo apt-get update
sudo apt-get install docker.io运行Docker
确保Docker服务正在运行:
bash
# 启动docker
sudo systemctl start docker
# 开启开机启动docker
sudo systemctl enable docker镜像操作示例
- 拉取镜像:从Docker Hub获取Ubuntu镜像
bash
docker pull ubuntu- 查看本地镜像:
bash
docker images- 运行镜像:基于Ubuntu镜像启动一个容器,并进入交互式bash shell
bash
docker run -it ubuntu /bin/bashDocker容器操作
- 列出运行中的容器:
bash
docker ps退出容器:在容器的命令行中,输入
exit或按Ctrl+D后台运行容器:不进入容器直接启动
bash
docker run -d ubuntu sleep 3600Dockerfile
Dockerfile是一个文本文件,用于自动化构建镜像过程。示例:
dockerfile
# 使用官方 Ubuntu 镜像作为基础镜像
FROM ubuntu:latest
# 设置作者信息
LABEL maintainer="yourname@example.com"
# 更新apt源并安装Apache
RUN apt-get update && apt-get install -y apache2
# 将本地文件复制到容器中
COPY index.html /var/www/html/index.html
# 开放80端口
EXPOSE 80
# 启动Apache服务
CMD ["apachectl", "-DFOREGROUND"]构建镜像:
bash
docker build -t my-apache2 .运行基于此镜像的容器:
bash
docker run -d -p 8080:80 my-apache2Docker网络
Docker提供了几种网络模式,如bridge(默认)、host、none和自定义网络。创建自定义网络示例:
bash
docker network create my-net在创建容器时指定网络:
bash
docker run -d --network=my-net --name container1 nginx数据管理
为了持久化数据,推荐使用数据卷(volume)或绑定宿主机目录。
- 创建并使用数据卷
bash
docker volume create my-volume
docker run -d -v my-volume:/data --name container2 nginx- 绑定宿主机目录
bash
docker run -d -v $(pwd)/html:/usr/share/nginx/html --name container3 nginx镜像加速配置
在 CentOS 7 中设置 Docker 镜像源加速,编辑 /etc/docker/daemon.json:
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl restart dockerDocker Compose
Docker Compose 是 Docker 官方推出的一个工具,用于定义和运行多容器 Docker 应用程序。它通过一个 YAML 文件(默认为 docker-compose.yml)来配置所有的服务。
基本示例:
yaml
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
mysql:
image: mysql:latest常用命令:
- 启动服务:
docker compose up - 停止并删除服务:
docker compose down - 查看服务状态:
docker compose ps
Docker Swarm
Docker Swarm 是 Docker 官方提供的容器编排工具,它允许用户轻松地管理和扩展容器化应用到多台主机上。
主要特性:
- 管理模式:由管理节点(Manager Nodes)和工作节点(Worker Nodes)组成
- 服务发现与负载均衡
- 安全性:支持 TLS 加密和安全集群接入令牌
- 网络:支持覆盖网络(Overlay Networks)
- 滚动更新与回滚
- 声明式配置
常用命令:
bash
# 初始化 Swarm 集群
docker swarm init
# 部署服务栈
docker stack deploy -c docker-compose.yml myweb常用命令
bash
# 构建镜像
docker build -t myapp .
# 运行容器
docker run -p 3000:3000 myapp
# 查看容器
docker ps
# 查看日志
docker logs container_id
# 进入容器
docker exec -it container_id /bin/bash最佳实践
- 使用多阶段构建
- 最小化镜像大小
- 合理使用缓存
- 安全扫描
- 使用 .dockerignore 文件
- 避免在容器中运行不必要的进程