资讯动态

Linux系统下Docker安装与配置完整指南

发布时间:2026/10/27 14:12:09 来源:尧图企业网站定制
1. Linux环境下Docker安装前的准备工作在开始安装Docker之前我们需要做好充分的准备工作。作为在Linux系统上运行的容器化平台Docker对系统环境有一定要求合理的准备工作能避免后续安装和使用过程中出现各种问题。1.1 系统环境检查首先确认你的Linux发行版和内核版本是否符合要求。Docker官方推荐运行在64位Linux发行版上内核版本至少为3.10或更高。可以通过以下命令检查uname -r cat /etc/*-release对于大多数现代Linux发行版如Ubuntu 16.04/CentOS 7这些要求都能满足。但如果你使用的是较旧的系统可能需要先升级内核。注意在生产环境中建议使用LTS长期支持版本的Linux发行版以获得更好的稳定性和支持周期。1.2 卸载旧版本Docker如果你的系统上已经安装了旧版本的Docker可能被称为docker、docker.io或docker-engine建议先卸载它们以避免冲突sudo apt-get remove docker docker-engine docker.io containerd runc或者对于基于RPM的系统sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine1.3 安装依赖包Docker需要一些基础依赖包才能正常运行。根据你的Linux发行版安装必要的依赖对于Debian/Ubuntu系统sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release对于CentOS/RHEL系统sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm21.4 配置Docker的APT/YUM源为了确保安装的是官方维护的最新稳定版Docker我们需要添加Docker的官方软件源对于Debian/Ubuntu系统curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null对于CentOS/RHEL系统sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo提示如果你在中国大陆可以考虑使用国内镜像源来加速下载如阿里云或清华大学的镜像源。2. Docker引擎的安装与验证2.1 安装Docker引擎完成上述准备工作后现在可以正式安装Docker引擎了。对于Debian/Ubuntu系统sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io对于CentOS/RHEL系统sudo yum install docker-ce docker-ce-cli containerd.io如果你需要安装特定版本的Docker可以先列出可用版本apt-cache madison docker-ce # Ubuntu/Debian yum list docker-ce --showduplicates | sort -r # CentOS/RHEL然后指定版本安装sudo apt-get install docker-ceVERSION_STRING docker-ce-cliVERSION_STRING containerd.io # Ubuntu/Debian sudo yum install docker-ce-VERSION_STRING docker-ce-cli-VERSION_STRING containerd.io # CentOS/RHEL2.2 启动Docker服务并设置开机自启安装完成后需要启动Docker服务并设置为开机自动启动sudo systemctl start docker sudo systemctl enable docker2.3 验证Docker安装为了确认Docker已正确安装并运行可以执行以下测试命令sudo docker run hello-world这个命令会下载一个测试镜像并在容器中运行它。如果看到Hello from Docker!的消息说明安装成功。2.4 检查Docker版本信息了解安装的Docker版本信息对于后续使用和故障排查很有帮助docker --version docker-compose --version docker info这些命令会显示Docker客户端和服务器的版本信息以及系统级的配置和资源使用情况。3. Docker的配置与优化3.1 配置非root用户使用Docker默认情况下Docker需要root权限才能运行。为了安全和使用方便我们可以将当前用户加入docker组sudo usermod -aG docker $USER然后需要注销并重新登录或者执行以下命令使更改立即生效newgrp docker现在你可以不使用sudo直接运行docker命令了。重要安全提示docker组实际上等同于root权限因此只应将可信用户加入此组。3.2 配置Docker镜像加速器在国内访问Docker Hub可能会很慢我们可以配置镜像加速器来改善下载速度。常见的加速器包括阿里云、腾讯云等提供的服务。创建或编辑Docker的配置文件sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://your-mirror.mirror.aliyuncs.com] } EOF然后重启Docker服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker3.3 调整Docker数据存储位置默认情况下Docker将镜像和容器存储在/var/lib/docker目录下。如果这个分区空间不足可以修改存储位置首先停止Docker服务sudo systemctl stop docker然后移动现有数据如果有sudo mv /var/lib/docker /path/to/new/location创建符号链接或直接修改配置文件sudo tee /etc/docker/daemon.json -EOF { data-root: /path/to/new/location/docker } EOF最后重启Docker服务sudo systemctl start docker3.4 配置Docker日志轮转Docker容器生成的日志可能会占用大量磁盘空间。我们可以配置日志轮转来管理日志大小编辑Docker的配置文件sudo tee /etc/docker/daemon.json -EOF { log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF这会将每个容器的日志文件限制为最大10MB最多保留3个文件。修改后需要重启Docker服务。4. Docker常用操作与维护4.1 基本Docker命令以下是一些最常用的Docker命令搜索镜像docker search 镜像名拉取镜像docker pull 镜像名:标签列出镜像docker images运行容器docker run [选项] 镜像名 [命令]列出运行中的容器docker ps列出所有容器docker ps -a停止容器docker stop 容器ID启动已停止的容器docker start 容器ID删除容器docker rm 容器ID删除镜像docker rmi 镜像ID查看容器日志docker logs 容器ID进入运行中的容器docker exec -it 容器ID /bin/bash4.2 容器与主机之间的文件传输有时我们需要在容器和主机之间传输文件从主机复制到容器docker cp /host/path container_id:/container/path从容器复制到主机docker cp container_id:/container/path /host/path4.3 容器资源限制为了防止容器占用过多系统资源可以设置资源限制限制内存使用docker run -it --memory512m 镜像名限制CPU使用docker run -it --cpus1.5 镜像名限制CPU优先级docker run -it --cpu-shares512 镜像名4.4 Docker系统清理随着使用时间的增加Docker可能会积累大量不再使用的镜像、容器和网络等资源。定期清理可以释放磁盘空间删除所有停止的容器docker container prune删除所有未被使用的镜像docker image prune -a删除所有未被使用的网络docker network prune删除所有未被使用的资源docker system prune更彻底的清理包括构建缓存docker system prune -a5. 常见问题与解决方案5.1 Docker服务启动失败如果遇到Docker服务无法启动的情况可以按照以下步骤排查检查服务状态sudo systemctl status docker查看详细日志sudo journalctl -u docker常见原因及解决方案内核模块缺失确保加载了必要的内核模块overlay、aufs等存储驱动问题尝试在/etc/docker/daemon.json中指定不同的存储驱动端口冲突检查是否有其他服务占用了Docker使用的端口默认为2375/23765.2 容器网络连接问题容器无法访问外部网络或主机无法访问容器服务检查Docker网络配置docker network ls docker network inspect 网络名验证防火墙设置sudo iptables -L解决方案确保防火墙允许Docker流量检查容器是否连接到正确的网络验证端口映射是否正确5.3 镜像拉取速度慢或失败检查当前配置的镜像源docker info | grep -i mirror尝试更换镜像源如前文所述配置镜像加速器对于特定镜像可以尝试直接从国内镜像站拉取docker pull registry.cn-hangzhou.aliyuncs.com/library/镜像名5.4 容器内时间不正确如果容器内的时间与主机不一致检查主机时间date运行容器时同步主机时间docker run -it --rm --privileged 镜像名或者在Dockerfile中添加ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone5.5 容器存储空间不足检查Docker存储使用情况docker system df清理无用资源如前文所述扩展存储空间如果使用devicemapper存储驱动可能需要调整存储池大小考虑迁移到overlay2存储驱动6. Docker进阶配置与使用技巧6.1 使用Docker Compose管理多容器应用Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。安装方法sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose创建一个简单的docker-compose.yml文件示例version: 3 services: web: image: nginx:alpine ports: - 8080:80 db: image: postgres:13 environment: POSTGRES_PASSWORD: example启动服务docker-compose up -d6.2 构建自定义镜像通过Dockerfile创建自定义镜像FROM ubuntu:20.04 RUN apt-get update apt-get install -y python3 COPY app.py /app/ WORKDIR /app CMD [python3, app.py]构建镜像docker build -t my-app .6.3 容器健康检查在Dockerfile中添加健康检查HEALTHCHECK --interval30s --timeout3s \ CMD curl -f http://localhost/ || exit 1或者在docker-compose.yml中healthcheck: test: [CMD, curl, -f, http://localhost] interval: 30s timeout: 3s retries: 36.4 容器资源监控查看容器资源使用情况docker stats使用cAdvisor进行更详细的监控docker run \ --volume/:/rootfs:ro \ --volume/var/run:/var/run:ro \ --volume/sys:/sys:ro \ --volume/var/lib/docker/:/var/lib/docker:ro \ --volume/dev/disk/:/dev/disk:ro \ --publish8080:8080 \ --detachtrue \ --namecadvisor \ google/cadvisor:latest6.5 容器安全最佳实践不要以root用户运行容器进程docker run -u 1000:1000 镜像名限制容器能力docker run --cap-dropALL --cap-addNET_BIND_SERVICE 镜像名使用只读文件系统docker run --read-only 镜像名定期更新镜像和Docker引擎docker pull 镜像名:最新标签 sudo apt-get upgrade docker-ce

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑