Docker快速入门(ubuntu环境下)

1.docker安装

官方获取教程:getDocker

bash 复制代码
curl -fsSL https://get.docker.com -o install-docker.sh
sudo sh install-docker.sh
# 下载失败可以使用阿里云镜像
sudo sh install-docker.sh --mirror Aliyun
docker version

2.设置镜像站

bash 复制代码
# 配置镜像站
sudo vi /etc/docker/daemon.json

# 把以下内容放进去
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.1panel.live",
        "https://hub.rat.dev"
    ]
}
# 重启docker
sudo service docker restart

3.常用docker命令

这些命令覆盖了 90% 以上的日常使用场景。建议结合 --help 参数查看具体命令的详细选项,例如:

bash 复制代码
docker run --help

3.1.镜像(Image)管理

命令 说明
docker images 列出本地所有镜像
docker pull <image> 从仓库拉取镜像(如 docker pull nginx
docker build -t <name:tag> . 从当前目录的 Dockerfile 构建镜像
docker rmi <image> 删除本地镜像
docker tag <src> <target> 给镜像打标签(如 docker tag myapp:latest myapp:v1
docker history <image> 查看镜像构建历史

docker的pull命令详解


docker pull docker.io/library/nginx:latest

repository(镜像库/存放一个镜像的不同版本):docker.io/library/nginx

registry(仓库地址):docker.io

namespace(命名空间/作者名):library,library是官方仓库命名空间

tag(标签/版本号):latest

官方仓库和最新版本可以省略不写,省略为:docker pull nginx

3.2.容器(Container)管理

命令 说明
docker ps 查看正在运行的容器
docker ps -a 查看所有容器(包括已停止的)
docker run [OPTIONS] <image> 启动新容器常用选项:-d 后台运行-p 8080:80 端口映射-v /host:/container 挂载卷--name mycontainer 指定名称-it 交互式终端
docker start <container> 启动已停止的容器
docker stop <container> 停止运行中的容器(优雅停止)
docker kill <container> 强制终止容器
docker restart <container> 重启容器
docker rm <container> 删除已停止的容器(加 -f 可强制删除运行中容器)
docker logs <container> 查看容器日志(加 -f 实时跟踪)
docker exec -it <container> /bin/bash 进入运行中的容器执行命令
docker inspect <container/image> 查看容器或镜像的详细信息(JSON 格式)

3.3.批量操作与清理

命令 说明
docker system df 查看 Docker 磁盘使用情况
docker system prune 清理未使用的容器、网络、镜像(不包括 volume)
docker system prune -a 清理所有未使用的镜像(包括悬空和未被容器引用的)
docker container prune 删除所有已停止的容器
docker image prune 删除悬空(dangling)镜像
docker volume prune 删除未使用的数据卷

3.4.其他实用命令

命令 说明
docker version 查看 Docker 客户端和服务器版本
docker info 显示 Docker 系统信息(存储驱动、容器数量等)
docker login 登录 Docker Hub 或私有仓库
docker logout 退出登录
docker push <image> 推送镜像到仓库(需先 docker tag 打好仓库前缀)

3.5.常用组合示例

bash 复制代码
# 后台运行一个 Nginx 容器,映射 8080 端口
docker run -d -p 8080:80 --name web nginx

# 查看容器实时日志
docker logs -f web

# 进入容器内部
docker exec -it web /bin/bash

# 删除所有已停止的容器
docker rm $(docker ps -aq)

# 删除所有未被使用的镜像
docker image prune -a

3.6. 镜像推送 (Push) 到 Docker Hub

如果你想把自己构建的镜像分享给别人或者部署到服务器上,需要推送到镜像仓库(如 Docker Hub)。

操作步骤:

  1. 登录仓库 :首先需要在终端登录你的 Docker Hub 账号。

    bash 复制代码
    docker login
  2. 打标签 (Tag) :推送镜像前,必须按照 用户名/镜像名:版本 的格式给镜像重命名。

    bash 复制代码
    docker tag myapp:latest your-dockerhub-username/myapp:latest
  3. 推送 (Push) :将打完标签的镜像推送到云端。

    bash 复制代码
    docker push your-dockerhub-username/myapp:latest

3.7. Docker 网络模式 (Network)

"桥接模式"和"Host 模式"是 Docker 最常用的两种网络驱动。它们决定了容器如何与外界通信。

3.7.1.核心概念解析

模式名称 驱动名称 (--driver) 特点 适用场景
Bridge (桥接) bridge (默认) 容器通过虚拟网桥连接宿主机,拥有独立的 Network Namespace 和 IP。容器间可通过 容器名 互相访问(需在同用户自定义网络中)。 开发环境、微服务架构(服务间需要通信)。
Host (主机) host 容器直接复用宿主机的 Network Namespace,不隔离网络。容器没有独立 IP,直接使用宿主机 IP 和端口。 对网络性能要求极高、端口冲突较少的场景。

3.7.2.常用命令示例

1. 桥接模式 (Bridge) - 构建子网

如果你想让多个容器(例如 Web 服务和数据库)通过名字直接通信,需要创建一个自定义的桥接网络。

bash 复制代码
# 1. 创建一个自定义的桥接网络 (推荐,比默认 bridge 网络支持自动 DNS 解析)
docker network create my-web-network

# 2. 启动容器时指定网络和名字
# 容器 A
docker run -d --name web-server --network my-web-network nginx

# 容器 B (例如 MySQL)
docker run -d --name mysql-db --network my-web-network mysql:8

# 结果:在 web-server 容器里可以直接 ping 通 mysql-db,无需知道具体 IP。

2. Host 模式 - 共享宿主机网络

bash 复制代码
# 启动容器时指定 --network host
docker run -d --network host --name my-host-app nginx

# 结果:容器内的 80 端口直接映射到宿主机 80 端口,无需使用 -p 参数映射。
# 注意:此时如果宿主机 80 端口被占用,容器会启动失败。

3.8. Docker Compose (多容器应用)

对于复杂的项目,通常包含 Web 服务、数据库、缓存等多个容器。手动一个个启动非常麻烦。Docker Compose 允许你通过一个 YAML 文件(通常命名为 docker-compose.yml)来定义和运行整个应用。

3.8.1. 安装 Docker Compose (如果未安装)

bash 复制代码
# 通常 Docker Desktop 已包含,Linux 用户可单独安装
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

3.8.2. 编写 docker-compose.yml 示例

假设我们要部署一个包含 Nginx 和 Redis 的简单应用:

yaml 复制代码
# docker-compose.yml
version: '3.8' # Docker Compose 文件版本

services: # 定义服务 (即容器)
  # 服务 1: Web 服务
  web:
    image: nginx:alpine # 使用的镜像
    ports:
      - "8080:80"       # 端口映射: 宿主机:容器
    volumes:
      - ./html:/usr/share/nginx/html # 挂载静态文件目录
    networks:
      - app-network     # 加入自定义网络

  # 服务 2: 缓存服务
  redis:
    image: redis:alpine
    ports:
      - "6379:6379"
    networks:
      - app-network

# 定义网络
networks:
  app-network:
    driver: bridge # 使用桥接模式,让 web 和 redis 可以通过服务名互相访问

# 定义数据卷 (如果需要持久化数据)
volumes:
  # 这里可以声明命名卷,或者使用默认的匿名卷

3.8.3. 常用 Compose 命令

在存放 docker-compose.yml 的目录下执行:

命令 说明
docker-compose up -d 后台启动所有服务 (-d),并自动构建镜像(如果需要)。
docker-compose down 停止并删除所有服务容器、网络。
docker-compose ps 查看当前项目中所有容器的状态。
docker-compose logs -f 查看所有服务的日志(-f 实时跟踪)。
docker-compose build 仅重新构建镜像,不启动容器。

总结

相关推荐
江湖有缘2 小时前
Docker好搭档:轻量级端口检查工具Dockpeek上手体验
docker·容器·eureka
拾贰_C2 小时前
【Ubuntu】安装Nginx(nVidia驱动未安装成功阻止版)
linux·运维·服务器·ubuntu
独隅12 小时前
PyTorch 模型部署的 Docker 配置与性能调优深入指南
人工智能·pytorch·docker
sghuter14 小时前
Ubuntu安装Redis
redis·ubuntu·bootstrap
yuzhuanhei15 小时前
docker常用命令
运维·docker·容器
我叫张小白。15 小时前
Dify系列(一):平台安装部署+界面操作
docker·ai·语言模型·大模型·dify·智能体
HwJack2016 小时前
HarmonyOS响应式布局与窗口监听:让界面像呼吸般灵动的艺术
ubuntu·华为·harmonyos
anarckk16 小时前
docker volume 导入导出命令
运维·docker·容器