Linux下的Docker安装教程
零、目录
文章目录
- Linux下的Docker安装教程
- 零、目录
- 一、简介
- 二、准备工作
-
-
- [1. 系统检查](#1. 系统检查)
-
- 三、Docker的安装步骤
-
-
- [1. 通过YUM安装(博主亲测有效!!!)](#1. 通过YUM安装(博主亲测有效!!!))
-
- 四、验证Docker安装
- 五、Docker常用命令及操作
- 六、高级技巧与调试
-
-
- [使用 Docker Compose](#使用 Docker Compose)
- 调试技巧
-
- 七、实际项目应用
-
-
- [示例项目:搭建一个 Flask + Redis 应用](#示例项目:搭建一个 Flask + Redis 应用)
- [访问 Flask 应用:在浏览器中访问 `http://localhost:5000`。](#访问 Flask 应用:在浏览器中访问
http://localhost:5000。)
-
- 八、Docker的工作原理
-
-
- [cgroups 和 namespaces](#cgroups 和 namespaces)
-
- 九、报错解决
-
-
- 1.系统代理
- 2.虚拟机代理地址
- [3. 添加镜像](#3. 添加镜像)
- 4.DNS配置
- 5.重启docker服务
- AI创作声明
-
一、简介
Docker 是一个开源的应用容器引擎,可以让开发者将应用及其依赖打包成一个标准化的容器,然后在任何地方运行。其最大特点是轻量级、快速和便捷,尤其适用于微服务架构和 DevOps 场景。本文将详细讲解如何在 Linux 上安装 Docker,并介绍一些常见的配置和调试技巧。
二、准备工作
在开始安装 Docker 之前,需要确保你的系统满足以下要求:
- 需要有 root 或 sudo 权限的用户
- 系统需要运行在支持 Docker 的 Linux 发行版上,如 Ubuntu、CentOS 或 Debian
- 系统内核版本需要大于 3.10(可以通过
uname -r命令查看当前内核版本)
1. 系统检查
首先,查看 Linux 内核版本:
bash
uname -r
如果版本低于 3.10,需要升级内核,或者选择其他版本的 Docker。
root@node1 \~\]# uname -r 3.10.0-1160.el7.x86_64
三、Docker的安装步骤
Docker 在不同的 Linux 发行版上有不同的安装方式。下面将详细讲解在 CentOS安装 Docker 的步骤。
1. 通过YUM安装(博主亲测有效!!!)
在 CentOS、RHEL 或 Fedora 上,你可以使用 YUM 包管理器安装 Docker。
-
安装必要的依赖
首先,确保系统已安装
yum-utils工具:bashsudo yum install -y yum-utils -
添加 Docker 仓库
执行以下命令将 Docker 的官方仓库添加到你的系统中:
!老铁你切记,有的电脑显示下边这个是两行,实际上是一个命令!bashsudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo不是每次都会成功,一次不行就再来一次
-
安装 Docker CE
安装 Docker CE:
这个命令也是,一次执行不成功就多执行几次,我执行了5次才成功bashsudo yum install docker-ce -
启动 Docker 服务
启动 Docker 服务并设置开机启动:
bashsudo systemctl start docker sudo systemctl enable docker -
验证 Docker 安装
使用以下命令检查 Docker 是否安装成功:
bashdocker --version
root@node1 \~\]# docker --version Docker version 26.1.4, build 5650f9b \[root@node1 \~\]#
四、验证Docker安装
安装完成后,确保 Docker 正常运行。可以通过以下几个命令来验证:
-
检查 Docker 服务状态
使用以下命令检查 Docker 服务是否在运行:
bashsudo systemctl status docker如果 Docker 正常运行,输出应该显示为"active (running)"。
酱婶的就成功了
-
运行测试容器
运行一个简单的测试容器,确保 Docker 正常工作:
root@node1 \~\]# docker run hello-world Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 31.13.71.19:443: i/o timeout. See 'docker run --help'.
执行这个代码有的时候会出现这个报错,那真是脑瓜子嗡嗡的,不过博主凭借着惊人的智慧也算是成功解决了,具体内容看下边的报错解决部分bashsudo docker run hello-world这个命令会下载并运行一个名为
hello-world的 Docker 镜像,输出一条欢迎消息。
五、Docker常用命令及操作
-
启动 Docker 容器
bashdocker run -it ubuntu bash该命令会启动一个 Ubuntu 容器,并进入容器内的 bash 环境。
-
列出所有容器
bashdocker ps -a列出所有的容器,包括运行中和已停止的容器。
-
停止 Docker 容器
bashdocker stop <container_id>停止指定的容器。
-
删除容器
bashdocker rm <container_id>删除指定的容器。
-
查看 Docker 镜像
bashdocker images查看本地镜像列表。
-
删除镜像
bashdocker rmi <image_id>删除指定的镜像。
六、高级技巧与调试
使用 Docker Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。在项目中使用 Docker Compose 可以轻松管理多个容器。创建一个 docker-compose.yml 文件,定义多个服务并使用 docker-compose 命令启动所有服务。
-
创建
docker-compose.yml文件yamlversion: '3' services: web: image: nginx ports: - "8080:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example -
启动服务
bashdocker-compose up
调试技巧
-
查看容器日志
bashdocker logs <container_id>查看容器的输出日志,帮助排查错误。
-
交互式运行容器
使用
-it参数可以进入容器的交互式终端:bashdocker run -it ubuntu bash
七、实际项目应用
示例项目:搭建一个 Flask + Redis 应用
-
创建项目文件夹
plaintextflask_redis/ ├── app.py ├── Dockerfile ├── requirements.txt └── docker-compose.yml -
编写
app.pypythonfrom flask import Flask import redis app = Flask(__name__) r = redis.Redis(host='redis', port=6379) @app.route('/') def hello_world(): r.incr('counter') return f'Hello, World! Count: {r.get("counter").decode("utf-8")}' if __name__ == '__main__': app.run(host='0.0.0.0') -
编写
DockerfiledockerfileFROM python:3.8-slim COPY requirements.txt /app/ WORKDIR /app RUN pip install -r requirements.txt COPY . /app CMD ["python", "app.py"] -
编写
docker-compose.ymlyamlversion: '3' services: web: build: . ports: - "5000:5000" redis: image: redis -
启动项目
bashdocker-compose up --build
访问 Flask 应用:在浏览器中访问 http://localhost:5000。
八、Docker的工作原理
Docker 基于 Linux 的 cgroups 和 namespaces 技术,通过对资源的隔离和限制,能够使得不同的容器共享相同的操作系统内核而不会相互干扰。这使得 Docker 比虚拟机更加轻量、高效。每个 Docker 容器都有自己的网络、文件系统和进程空间。
cgroups 和 namespaces
- cgroups:用来控制容器的资源分配,如 CPU、内存、磁盘 I/O 等。
- namespaces:用来提供容器级别的资源隔离,包括进程、网络、用户等。
九、报错解决
root@node1 \~\]# docker run hello-world Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 31.13.71.19:443: i/o timeout. See 'docker run --help'.
我试了好多个办法,具体是哪个起作用了我也不确定,反正都整上指定是好使
1.系统代理
我是用的虚拟机,所以先确定了一下windows的代理地址(127.0.0.1:18888)和windows的ip地址(192.168.10.1)
2.虚拟机代理地址
bash
vim /etc/systemd/system/docker.service.d/http-proxy.conf
bash
[Service]
Environment="HTTP_PROXY=http://192.168.10.1:10809"
Environment="HTTPS_PROXY=http://192.168.10.1:10809"
Environment="NO_PROXY=localhost,127.0.0.1,.local"
bash
vim /etc/profile
bash
export http_proxy="http://192.168.10.1:10809"
export https_proxy="http://192.168.10.1:10809"
export ftp_proxy="http://192.168.10.1:10809"
export no_proxy="localhost,127.0.0.1,.local"
访问curl -I https://www.google.com说明代理对了
3. 添加镜像
bash
sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
bash
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.tuna.tsinghua.edu.cn",
"https://mirror.ccs.tencentyun.com",
"http://hub-mirror.c.163.com"
]
}
4.DNS配置
bash
sudo vi /etc/resolv.conf
bash
nameserver 192.168.10.2
nameserver 8.8.8.8
nameserver 4.4.4.4
5.重启docker服务
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
AI创作声明
本文部分内容由 AI 辅助生成,并经人工整理与验证,仅供参考学习,欢迎指出错误与不足之处。