在Linux系统中使用Docker是一项关键技能,它能显著提升开发、测试和部署的效率。以下是详细的使用指南:
卸载旧版本(如有):
sudo apt-get remove docker docker-engine docker.io containerd runc
设置仓库:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
添加官方GPG密钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
设置稳定版仓库:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) 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-compose-plugin
验证安装:
sudo docker run hello-world
镜像管理:
docker pull ubuntu:20.04 # 拉取镜像
docker images # 列出镜像
docker rmi <image_id> # 删除镜像
容器操作:
docker run -it ubuntu:20.04 bash # 启动交互式容器
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker stop <container_id> # 停止容器
docker start <container_id> # 启动已停止的容器
docker rm <container_id> # 删除容器
网络管理:
docker network ls # 列出网络
docker network inspect bridge # 查看网络详情
挂载主机目录:
docker run -v /host/path:/container/path ubuntu
使用数据卷:
docker volume create my_vol
docker run -v my_vol:/container/path ubuntu
安装:
sudo apt install docker-compose-plugin
示例docker-compose.yml:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
常用命令:
docker compose up -d # 启动服务
docker compose down # 停止服务
docker compose logs # 查看日志
非root用户操作:
sudo usermod -aG docker $USER
newgrp docker
镜像安全扫描:
docker scan <image_name>
资源限制:
docker run -it --cpus="1.5" --memory="512m" ubuntu
进入运行中的容器:
docker exec -it <container_id> bash
查看容器日志:
docker logs <container_id>
检查容器配置:
docker inspect <container_id>
多阶段构建(Dockerfile示例):
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
FROM alpine:latest
COPY --from=builder /app/myapp .
CMD ["./myapp"]
使用Docker Swarm:
docker swarm init
docker service create --replicas 3 -p 80:80 --name nginx nginx
连接容器网络:
docker network create my_network
docker run --network=my_network --name container1 my_image
docker run --network=my_network --name container2 my_image
权限拒绝错误:
sudo chmod 666 /var/run/docker.sock
端口冲突:
netstat -tulnp | grep <port>
kill <pid>
磁盘空间不足:
docker system prune -a
通过掌握这些Docker操作,您可以在Linux系统中高效地构建、部署和管理容器化应用。建议定期备份重要数据,并保持Docker版本更新以获得最新功能和安全补丁。