在Linux系统中部署容器主要依赖于容器化技术(如Docker或Podman),结合编排工具(如Kubernetes或Docker Compose)可实现更复杂的场景。以下是详细步骤和注意事项:
容器运行时
编排工具(可选)
# 卸载旧版本(如有)
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
# 添加Docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 设置仓库
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 验证安装
sudo docker run hello-world
sudo usermod -aG docker $USER
newgrp docker # 刷新用户组
docker pull nginx:alpine # 拉取Nginx镜像
docker run -d -p 8080:80 --name my-nginx nginx:alpine
-d
:后台运行-p 8080:80
:将主机8080端口映射到容器80端口--name
:指定容器名称docker ps # 查看运行中的容器
docker stop my-nginx # 停止容器
docker rm my-nginx # 删除容器
docker logs my-nginx # 查看日志
sudo apt-get install docker-compose-plugin # Docker v20.10+内置
docker-compose.yml
version: '3'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
docker compose up -d # 后台启动
docker compose ps # 查看状态
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start --driver=docker # 使用Docker驱动
kubectl create deployment nginx --image=nginx:alpine
kubectl expose deployment nginx --port=80 --type=NodePort
minikube service nginx # 访问服务
镜像安全
docker scan nginx:alpine
资源限制
docker run -d --memory=512m --cpus=1 nginx:alpine
日志管理
json-file
日志驱动或集成ELK栈网络隔离
docker network create my-net
端口冲突
sudo netstat -tulnp | grep 8080
存储持久化
docker run -v /host/path:/container/path nginx:alpine
时区问题
docker run -e TZ=Asia/Shanghai nginx:alpine
通过以上步骤,您可以在Linux上快速部署和管理容器。根据需求选择工具链,生产环境建议使用Kubernetes编排并配合监控系统(如Prometheus + Grafana)。