当前位置: 首页 > news >正文

docker新手教程

这是一个非常全面的 Docker 新手入门指南,从核心概念到常用命令,再到实战流程,帮你快速上手。

一、 Docker 核心概念

在学命令之前,先理解三个关键概念:

  1. 镜像

    • 类比:一个软件的安装包(比如 mysql.msi)。它是一个只读的模板,包含了运行软件所需的所有内容(代码、运行时、库、环境变量和配置文件)。

    • 例如:nginx:latestmysql:8.0ubuntu:20.04

  2. 容器

    • 类比:一个软件的运行实例。它是镜像运行时的实体。

    • 容器可以被创建、启动、停止、删除。每个容器都是相互隔离、安全的平台。

    • 镜像 和 容器 的关系,就像  和 对象实例 的关系。

  3. 仓库

    • 类比:手机的应用商店。用于存放镜像的地方。

    • Docker Hub 是官方的公共仓库,任何人都可以下载上面的镜像。你也可以搭建私有的仓库。


二、 Docker 安装

1、Windows / macOS:

访问 Docker 官网 https://www.docker.com/ 下载并安装 Docker Desktop

安装后,在终端(Windows 上用 CMD 或 PowerShell,macOS 上用 Terminal)输入 docker --version 验证是否成功。

2、Linux (以 Ubuntu 为例):

# 更新软件包索引
sudo apt update# 安装依赖包
sudo apt install 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# 设置稳定版仓库
echo "deb [arch=amd64 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# 安装 Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io# 启动 Docker 服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker# 将当前用户加入 docker 用户组(避免每次使用 sudo)
sudo usermod -aG docker $USER
# 执行后需要**重新登录**终端才能生效

三、 常用 Docker 命令

1. 镜像相关

搜索镜像docker search <镜像名>

docker search nginx

拉取(下载)镜像docker pull <镜像名>[:标签]

docker pull nginx:latest
docker pull ubuntu:20.04

列出本地镜像docker images 或 docker image ls

删除本地镜像docker rmi <镜像ID或名称>

docker rmi nginx:latest
# 强制删除(如果镜像正在被容器使用)
docker rmi -f nginx:latest
2. 容器相关

创建并启动容器docker run [选项] <镜像名> [命令]

这是最核心、最复杂的命令。

# 最基本运行(前台运行)
docker run nginx# -d: 后台运行(守护进程)
docker run -d --name my_nginx nginx# -p: 端口映射 [主机端口]:[容器端口]
docker run -d -p 8080:80 --name my_web nginx# -v: 数据卷映射 [主机目录]:[容器目录] (持久化数据)
docker run -d -p 8080:80 -v /home/user/html:/usr/share/nginx/html --name my_web nginx# -e: 设置环境变量
docker run -d -e MYSQL_ROOT_PASSWORD=my-secret-pw --name my_mysql mysql:8.0# --rm: 容器停止后自动删除(常用于测试)
docker run --rm -it ubuntu:20.04 /bin/bash# -it: 交互式终端(进入容器)
docker run -it ubuntu:20.04 /bin/bash

列出容器

docker ps          # 查看正在运行的容器
docker ps -a       # 查看所有容器(包括已停止的)

启动/停止/重启容器

docker start <容器名或ID>
docker stop <容器名或ID>     # 优雅停止
docker restart <容器名或ID>
docker kill <容器名或ID>     # 强制立即停止

进入正在运行的容器docker exec [选项] <容器名或ID> <命令>

# 在容器中执行一个命令
docker exec my_nginx ls /etc/nginx# -it: 进入容器的交互式终端(最常用)
docker exec -it my_nginx /bin/bash

查看容器日志docker logs <容器名或ID>

docker logs my_nginx
docker logs -f my_nginx  # -f: 持续跟踪日志输出(类似 tail -f)

删除容器docker rm <容器名或ID>

docker rm my_nginx
# 强制删除运行中的容器
docker rm -f my_nginx
# 删除所有已停止的容器
docker container prune

查看容器信息docker inspect <容器名或ID>

四、 实战流程:以 Nginx 为例

假设你想在宿主机(你的电脑)的 8080 端口运行一个 Nginx 服务器,并且用你本地的网页文件替换 Nginx 默认的首页。

1、拉取镜像

docker pull nginx:latest

2、准备本地文件

在宿主机上创建一个目录,比如 /home/user/my_website,在里面放一个 index.html 文件。

3、运行容器(关键步骤)

docker run -d \--name my_nginx_container \-p 8080:80 \-v /home/user/my_website:/usr/share/nginx/html \nginx:latest

    -d: 后台运行。

    --name: 给容器起个好记的名字。

    -p 8080:80: 将宿主机的 8080 端口映射到容器的 80 端口。

    -v ...: 将宿主机的 /home/user/my_website 目录挂载到容器的 Nginx 默认网页目录。

    4、测试访问

    打开浏览器,访问 http://localhost:8080,你应该能看到你写的 index.html 内容。

    5、查看和管理

    docker ps                      # 查看容器是否在运行
    docker logs my_nginx_container # 查看 Nginx 访问日志
    docker exec -it my_nginx_container /bin/bash # 进入容器内部看看

    6、停止和清理

    docker stop my_nginx_container # 停止容器
    docker rm my_nginx_container   # 删除容器
    # 镜像可以保留,下次可以直接使用

    五、 使用 Dockerfile 构建自定义镜像

    当官方镜像不能满足需求时,你需要自己构建镜像。

    1、创建一个项目目录,并进入。

    2、创建一个名为 Dockerfile 的文件(无后缀)。

    3、编写 Dockerfile 内容

    # 使用官方 Python 运行时作为父镜像
    FROM python:3.9-slim# 设置工作目录为 /app
    WORKDIR /app# 将当前目录内容复制到容器的 /app 下
    COPY . /app# 安装 requirements.txt 中指定的任何所需包
    RUN pip install --no-cache-dir -r requirements.txt# 使端口 80 可供此容器外的环境使用
    EXPOSE 80# 定义环境变量
    ENV NAME World# 在容器启动时运行 app.py
    CMD ["python", "app.py"]

    4、构建镜像

    docker build -t my-python-app .
    # -t: 给镜像打标签,命名为 my-python-app
    # . : 表示当前目录是构建上下文

    5、运行自定义镜像

    docker run -d -p 4000:80 --name my-running-app my-python-app

    六、 使用 docker-compose 管理多容器应用

    当你的应用需要多个服务(如 Web 服务器 + 数据库)时,使用 docker-compose 可以简化管理。

    1、安装 Docker Desktop 自带 docker-compose。Linux 用户可能需要单独安装。

    2、创建 docker-compose.yml 文件

    version: '3.8'
    services:web:image: nginx:latestports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmldepends_on:- dbdb:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: secretMYSQL_DATABASE: myapp

    3、启动所有服务

    docker-compose up -d

    4、停止并移除所有服务

    docker-compose down

    总结

    1. 安装 Docker

    2. 从 docker pull 和 docker run 开始,这是最常用的命令。

    3. 理解 镜像(模板)和 容器(实例)的区别。

    4. 掌握三个核心概念:端口映射 (-p)数据卷 (-v)环境变量 (-e)

    5. 需要自定义环境时,学习 Dockerfile

    6. 需要管理复杂应用时,学习 docker-compose

    http://www.dtcms.com/a/529587.html

    相关文章:

  1. 2025年主流大模型全景对比:Grok、Claude、ChatGPT与Gemini的战场
  2. Spring Boot3零基础教程,SpringApplication 自定义 banner,笔记54
  3. 做erp系统的网站网站调研方法有哪些内容
  4. 做网站页面视频教学外贸网站建设智能建站
  5. 多张图做网站背景wordpress后台翻译
  6. 网站建设与维护本科教材中企动力做什么的
  7. Spring LTW:类加载时织入全解析
  8. 设计君网站wordpress的中文插件安装教程
  9. 好口碑的网站制作安装价格世界足球排名
  10. 网站开发环境vs2015是什么动漫设计与制作工资多少
  11. 有哪些做废品的网站亚马逊平台的运营模式
  12. 网站开发 工资高吗简洁高端网页
  13. Elasticsearch:隔离环境中的高级向量搜索
  14. 网站关键词排名优化推广软件模板下载网站
  15. 松滋网站开发建了网站怎么装饰
  16. 移动端网站怎么做优化龙华网站建设主要工作
  17. 网站建设和优司怎么样电商分销平台
  18. defaultdict介绍
  19. 优惠券网站做淘客违规吗广告设计与制作专业描述
  20. 大型网站域名徐州圣道网络科技有限公司
  21. 网站开发维护人员可做易企秀的网站
  22. ssh远程登录那些事
  23. IOT项目——电源入门系列-第一章
  24. 上海品划做网站网站开发一般用哪个浏览器
  25. Spring与JSR-330标准注解对比指南
  26. GitHub等平台形成的开源文化正在重塑鸡腿肉
  27. 网站ip地址范围网络上市场推广
  28. 2025年江西省职业院校技能大赛“大数据应用与服务”竞赛样题
  29. 排名好的手机网站建设电商软件平台开发
  30. 万网网站建设万网网站建设建设银行钓鱼网站