➔
Docker是目前最流行的容器化平台,可以将应用及其依赖打包到轻量级容器中,实现"一次构建,到处运行"。本文介绍在Debian上安装Docker及基本使用方法。
▶卸载旧版本
code
yum remove -y docker docker-client docker-client-latest docker-common # CentOS
apt remove -y docker docker-engine docker.io containerd runc # Ubuntu
▶安装Docker CE
CentOS安装:
code
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
Ubuntu安装:
code
apt update
apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt update && apt install -y docker-ce docker-ce-cli containerd.io
启动并验证:
code
systemctl start docker
systemctl enable docker
docker version
docker run hello-world
▶配置镜像加速器
国内访问Docker Hub速度较慢,建议配置镜像加速器:
code
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
▶Docker常用命令
code
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker images # 查看本地镜像列表
docker pull ubuntu:22.04 # 拉取镜像
docker run -d -p 80:80 nginx # 运行nginx容器
docker exec -it 容器ID bash # 进入容器
docker logs 容器ID # 查看日志
docker stop 容器ID # 停止容器
docker rm 容器ID # 删除容器
docker rmi 镜像名 # 删除镜像
▶五、Docker Compose编排
Docker Compose通过YAML文件定义和管理多容器应用。一个典型的LNMP架构可通过单个命令启动:
code
version: '3.8'
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./web:/usr/share/nginx/html
php:
image: php:8.2-fpm
expose:
- "9000"
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
▶六、Docker安全最佳实践
容器安全不容忽视:使用非root用户运行容器、限制容器资源使用、扫描镜像漏洞、避免privileged模式运行。定期更新基础镜像并使用Docker Bench Security进行安全检查。
▶七、Docker数据持久化
使用Volume或Bind Mount实现数据持久化,确保容器重新创建后数据不丢失。对于数据库容器,建议使用Volume并配置定期备份。使用tmpfs存储临时数据可提升性能并保护敏感信息。
▶八、容器网络配置
Docker提供bridge、host、overlay等多种网络模式。bridge模式适合单机多容器通信,overlay模式实现跨主机容器互联。自定义网络可实现容器间DNS解析和服务发现。
▶九、Docker镜像优化
使用多阶段构建减少镜像层数和体积,选择Alpine基础镜像可缩小至传统镜像的10%。配合.dockerignore排除不必要的文件,镜像体积减少后部署和拉取速度显著提升。