Docker在Ubuntu系统中的详细操作指南

 更新时间:2025年07月22日 10:38:48   作者:带娃的IT创业者  
Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包在一个轻量级、可移植的容器中,实现快速部署和运行,本文给大家详细介绍了Docker在Ubuntu系统中的详细操作指南,需要的朋友可以参考下

一、Docker 简介

Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包在一个轻量级、可移植的容器中,实现快速部署和运行。

二、系统要求

  • 操作系统:Ubuntu 20.04 或更高版本(推荐使用 LTS 版本)
  • 用户权限:具有 sudo 权限
  • 网络:能够访问互联网(用于下载 Docker 和镜像)

三、安装 Docker Engine

方法一:使用官方安装脚本(推荐)

# 更新系统软件包
sudo apt update

# 安装依赖包
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 官方仓库
echo "deb [arch=$(dpkg --print-architecture) 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

# 更新软件包索引
sudo apt update

# 安装 Docker 引擎
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 验证是否安装成功
sudo docker --version

四、验证 Docker 是否正常运行

# 运行测试容器
sudo docker run hello-world

如果输出类似下面的内容,说明 Docker 安装成功:

Hello from Docker!
This message shows that your installation appears to be working correctly.

五、配置 Docker 用户权限(避免每次使用 sudo)

默认情况下,只有 root 用户或 docker 组用户才能运行 Docker 命令。

# 创建 docker 用户组(如果尚未存在)
sudo groupadd docker

# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER

# 重新加载用户组权限
newgrp docker

# 验证是否可以不使用 sudo 运行 Docker
docker run hello-world

注意:退出终端后重新登录,权限才会生效。

六、Docker 常用命令

1. 查看运行中的容器

docker ps

2. 查看所有容器(包括已停止的)

docker ps -a

3. 查看本地镜像

docker images

4. 拉取镜像

docker pull nginx

5. 运行容器

docker run -d -p 8080:80 --name mynginx nginx
  • -d:后台运行
  • -p 8080:80:将宿主机的 8080 端口映射到容器的 80 端口
  • --name mynginx:为容器指定名称
  • nginx:使用的镜像名

6. 停止容器

docker stop mynginx

7. 启动已存在的容器

docker start mynginx

8. 删除容器

docker rm mynginx

注意:删除前请先停止容器。

9. 删除镜像

docker rmi nginx

七、构建自定义镜像(使用 Dockerfile)

示例:构建一个简单的 Python Web 应用

1. 创建项目目录结构

mkdir myapp
cd myapp
touch app.py Dockerfile

2. 编写 app.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello from Docker!"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

3. 编写 Dockerfile

FROM python:3.10-slim
WORKDIR /app
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]

4. 构建镜像

docker build -t myapp .

5. 运行容器

docker run -d -p 5000:5000 --name myapp-container myapp

6. 浏览器访问

http://localhost:5000

八、数据卷挂载(Volume)

如果你希望容器内的数据持久化保存,可以使用 Volume。

docker run -d -p 5000:5000 \
  -v $(pwd)/data:/app/data \
  --name myapp-container myapp
  • $(pwd)/data:宿主机上的目录
  • /app/data:容器中的目录

九、网络配置

Docker 会自动为容器分配 IP,也可以自定义网络:

docker network create mynetwork
docker run --network mynetwork --name app1 -d myapp
docker run --network mynetwork --name app2 -d anotherapp

十、Docker Compose(多容器管理)

1. 安装 Docker Compose

# 下载最新版本
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

2. 示例:使用 docker-compose.yml 管理多服务

# docker-compose.yml
version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
# 启动服务
docker-compose up -d

# 停止服务
docker-compose down

十一、清理 Docker 资源

1. 删除所有停止的容器

docker container prune

2. 删除所有无用的镜像

docker image prune -a

3. 删除所有未使用的卷

docker volume prune

4. 删除所有未使用的网络

docker network prune

十二、常见问题与解决方法

问题解决方法
权限问题(Permission denied)确保用户已加入 docker 组,使用 newgrp docker 刷新权限
容器无法访问?检查端口映射、防火墙设置
构建失败?检查 Dockerfile 语法,依赖是否完整
磁盘空间不足?使用 docker system prune 清理无用资源

以上就是Docker在Ubuntu系统中的详细操作指南的详细内容,更多关于Docker在Ubuntu中的操作的资料请关注脚本之家其它相关文章!

相关文章

  • docker network 自定义网络配置与管理指南详细过程

    docker network 自定义网络配置与管理指南详细过程

    Docker网络是容器间通信和与外部世界交互的基础,通过自定义网络,可以实现容器间的隔离、静态 IP 分配和服务发现,这篇文章主要介绍了docker network 自定义网络配置与管理指南,需要的朋友可以参考下
    2025-05-05
  • docker默认存储路径修改方法总结

    docker默认存储路径修改方法总结

    docker默认存储路径是/var/lib/docker,占用服务器根分区,容易导致磁盘空间占满,下面这篇文章主要给大家介绍了关于docker默认存储路径修改方法的相关资料,需要的朋友可以参考下
    2023-10-10
  • 在Docker中部署Confluence和jira-software的方法步骤

    在Docker中部署Confluence和jira-software的方法步骤

    这篇文章主要介绍了在Docker中部署Confluence和jira-software的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 如何Docker化Python Django应用程序

    如何Docker化Python Django应用程序

    今天小编就为大家分享一篇关于如何Docker化Python Django应用程序的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • 国内最新可用Docker镜像源网址与配置方法(全网最全)

    国内最新可用Docker镜像源网址与配置方法(全网最全)

    使用国内镜像源可以大幅提升镜像拉取速度,减少网络波动,帮助初学者快速上手Docker,本文将详细介绍国内最热门的Docker镜像源平台,希望对大家有所帮助
    2025-06-06
  • Docker容器Container镜像Image如何存储详解

    Docker容器Container镜像Image如何存储详解

    本文主要介绍Docker容器(Container)和镜像(Image)是如何进行数据存储详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • docker网卡的IP地址修改方法总结

    docker网卡的IP地址修改方法总结

    这篇文章主要给大家总结介绍了关于docker网卡的IP地址修改方法,文中通过实例代码介绍的非常详细,对大家学习或者使用docker具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • Docker 和 Containerd 目录结构及存储机制详解

    Docker 和 Containerd 目录结构及存储机制详解

    Docker和Containerd是两种流行的容器运行时工具,它们都有自己的目录结构和存储机制,本文详细介绍了Docker和Containerd的目录结构和存储机制,并对比了它们之间的主要区别,包括存储路径、挂载点管理、配置文件和日志文件,感兴趣的朋友一起看看吧
    2025-02-02
  • Alpine镜像中telnet转移至busybox-extras

    Alpine镜像中telnet转移至busybox-extras

    今天小编就为大家分享一篇关于Alpine镜像中telnet转移至busybox-extras,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • docker镜像无法删除 Error:No such image:xxxxxx解决

    docker镜像无法删除 Error:No such image:xxxxxx解决

    这篇文章主要介绍了docker镜像无法删除 Error:No such image:xxxxxx解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论