本文将详细介绍如何在 Linux 系统上安装 Docker 并进行配置,涵盖 Docker 的基本概念、安装步骤、常用命令及使用技巧
chou403
/ Tool
/ c:
/ u:
/ 7 min read
在 Linux 上安装 Docker 并开始使用 Docker 是实现容器化应用程序的一种流行方法。以下是详细的步骤,包括具体命令操作。
Docker 安装
1. 准备工作
更新现有的软件包和包缓存:
sudo apt update
sudo apt upgrade -y
2. 安装必要的依赖
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
3. 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4. 设置 Docker 的 APT 源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. 安装 Docker
更新包索引并安装 Docker CE:
sudo apt update
sudo apt install docker-ce -y
6. 启动 Docker 并设置开机自启动
sudo systemctl start docker
sudo systemctl enable docker
7. 验证 Docker 安装
sudo docker --version
你应该看到类似于 Docker version 20.10.7, build f0df350
的输出。
8. 非 root 用户运行 Docker
将当前用户添加到 docker
组以便无需 sudo
运行 Docker 命令:
sudo usermod -aG docker $USER
然后退出并重新登录或使用 newgrp docker
命令来立即应用该组更改:
newgrp docker
Docker 使用
1. 运行第一个容器
运行一个简单的 Hello World 容器来验证 Docker 是否正常工作:
docker run hello-world
你应该看到 Docker 成功下载镜像并运行容器的消息。
2. 基本命令
拉取镜像
从 Docker Hub 拉取一个官方的 Ubuntu 镜像:
docker pull ubuntu
运行容器
以交互模式运行一个 Ubuntu 容器:
docker run -it ubuntu
这会启动一个 Ubuntu 容器并将你带到容器内部的 Shell。
列出容器
列出正在运行的容器:
docker ps
列出所有容器(包括停止的容器):
docker ps -a
停止容器
停止一个正在运行的容器:
docker stop <container_id>
删除容器
删除一个已经停止的容器:
docker rm <container_id>
删除镜像
删除一个镜像:
docker rmi <image_id>
3. 使用 Dockerfile 创建自定义镜像
编写 Dockerfile
创建一个名为 Dockerfile
的文件,内容如下:
# 使用官方的 Ubuntu 基础镜像
FROM ubuntu:latest
# 更新包列表并安装 Python
RUN apt-get update && apt-get install -y python3
# 设置工作目录
WORKDIR /app
# 复制当前目录内容到 /app
COPY . /app
# 执行命令
CMD ["python3", "hello.py"]
编写示例 Python 脚本
在同一目录下创建一个名为 hello.py
的文件,内容如下:
print("Hello, Docker!")
构建镜像
运行以下命令构建镜像:
docker build -t my-python-app .
运行镜像
使用新构建的镜像运行容器:
docker run my-python-app
你应该看到输出 Hello, Docker!
。
4. Docker Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。
安装 Docker Compose
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 --version
使用 Docker Compose
docker-compose.yml
文件用于定义和运行多容器 Docker 应用程序。以下是一个常见的 docker-compose.yml
文件示例,以及其中各个部分和参数的含义解释。
示例 docker-compose.yml
文件
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html
environment:
- NGINX_HOST=localhost
networks:
- webnet
app:
build:
context: ./app
dockerfile: Dockerfile
ports:
- "5000:5000"
volumes:
- ./app:/app
environment:
- FLASK_ENV=development
depends_on:
- db
networks:
- webnet
db:
image: postgres:latest
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
networks:
- webnet
volumes:
db_data:
networks:
webnet:
参数含义
version
指定 Compose 文件的版本。不同版本支持不同的功能,通常使用最新版本。
version: "3.8"
services
定义多个服务,每个服务对应一个容器。服务内部可以定义镜像,构建选项,环境变量,网络,卷等。
####### web
服务
定义一个 Nginx 服务:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html
environment:
- NGINX_HOST=localhost
networks:
- webnet
image
: 使用 Nginx 官方镜像nginx:latest
。ports
: 将主机的 8080 端口映射到容器的 80 端口。volumes
: 挂载主机文件到容器内(例如配置文件和静态文件)。environment
: 设置环境变量。networks
: 指定容器连接到的网络。
####### app
服务
定义一个 Flask 应用服务:
app:
build:
context: ./app
dockerfile: Dockerfile
ports:
- "5000:5000"
volumes:
- ./app:/app
environment:
- FLASK_ENV=development
depends_on:
- db
networks:
- webnet
build
: 从指定目录构建镜像。context
指定上下文路径,dockerfile
指定 Dockerfile 名称。ports
: 将主机的 5000 端口映射到容器的 5000 端口。volumes
: 挂载主机文件到容器内。environment
: 设置环境变量。depends_on
: 指定依赖关系,确保db
服务在app
服务启动前启动。networks
: 指定容器连接到的网络。
####### db
服务
定义一个 PostgreSQL 数据库服务:
db:
image: postgres:latest
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
networks:
- webnet
image
: 使用 PostgreSQL 官方镜像postgres:latest
。environment
: 设置数据库名称,用户和密码。volumes
: 使用命名卷存储数据库数据。networks
: 指定容器连接到的网络。
volumes
定义命名卷,用于数据持久化:
volumes:
db_data:
networks
定义网络,用于服务间通信:
networks:
webnet:
启动和管理
启动服务
在 docker-compose.yml
文件所在目录运行以下命令启动服务:
docker-compose up
使用 -d
选项在后台运行服务:
docker-compose up -d
这将启动一个 Nginx 服务,监听本地的 8080 端口。
访问 http://localhost:8080
,你应该看到 Nginx 的欢迎页面。
停止服务
使用以下命令停止服务:
docker-compose down
查看服务状态
查看正在运行的服务:
docker-compose ps
查看服务日志
查看特定服务的日志:
docker-compose logs <service_name>
例如:
docker-compose logs web
总结
通过上述步骤,你可以在 Linux 上安装并开始使用 Docker。Docker 强大的容器化功能和灵活的工具链使其成为现代 DevOps 流程中不可或缺的一部分。你可以根据项目需求进一步探索 Docker 的高级功能,如网络,卷,和安全性配置。