Docker新手使用教程

server/2025/1/20 18:11:31/

一、Docker 的基本概念

  1. 镜像 (Image):
    • 镜像是一个只读的模板,用于创建 Docker 容器
    • 镜像包含了运行应用程序所需的所有内容:代码、运行时环境、库、配置文件等。
    • 可以将镜像看作是应用程序的 “代码”。
    • 你可以从 Docker Hub 或其他镜像仓库下载现成的镜像,也可以自己构建镜像。
  2. 容器 (Container):
    • 容器是基于镜像创建的可运行实例。
    • 容器是相互隔离的,它有自己的文件系统、进程空间和网络接口。
    • 你可以启动、停止、删除容器,并且可以在容器内运行应用程序。
    • 可以将容器看作是应用程序的 “运行环境”。
  3. 仓库 (Registry):
    • 仓库是用于存储 Docker 镜像的地方。
    • Docker Hub 是最大的公共镜像仓库,你可以在这里找到各种各样的镜像。
    • 你也可以创建私有的镜像仓库。
  4. Dockerfile:
    • Dockerfile 是一个文本文件,包含了构建 Docker 镜像的指令。
    • 你可以使用 Dockerfile 来定义如何从基础镜像开始,构建自己的应用程序镜像。
  5. Docker Client:
    • docker 命令是 Docker 的客户端,用于与 Docker daemon 交互。
    • 你使用 docker run, docker ps 等命令,实际是发送命令到 Docker daemon 执行。
  6. Docker daemon:
    • Docker daemon 是一个运行在后台的服务,负责实际的镜像拉取、容器创建、容器运行等操作。

二、Docker 安装

  1. 下载 Docker:
    • 访问 Docker 官网:https://www.docker.com/get-started
    • 根据你的操作系统下载 Docker Desktop (macOS, Windows) 或 Docker Engine (Linux)。
  2. 安装 Docker:
    • 按照下载的安装程序中的说明进行安装。
  3. 验证安装:
    • 打开你的终端或命令提示符,输入 docker --version,如果输出 Docker 版本信息,则表示安装成功。

三、常用 Docker 命令

  1. 镜像操作:

    • docker pull <image_name>: 从镜像仓库拉取镜像到本地。
      • 例如:docker pull ubuntu 拉取 ubuntu 镜像。
    • docker images: 列出本地已下载的镜像。
    • docker rmi <image_id>: 删除本地的镜像。
      • 例如:docker rmi 234ab5c67de 删除 id 为 234ab5c67de 的镜像。
  2. 容器操作:

    • docker run <image_name>: 基于镜像创建一个新的容器并运行。
      • 例如:docker run -it ubuntu /bin/bash 运行 ubuntu 镜像,并进入 bash shell。
    • docker ps: 列出当前正在运行的容器
    • docker ps -a: 列出所有容器,包括正在运行和已停止的。
    • docker stop <container_id>: 停止一个正在运行的容器
    • docker start <container_id>: 启动一个已停止的容器
    • docker restart <container_id>: 重启一个容器
    • docker rm <container_id>: 删除一个已停止的容器
      • 例如:docker rm 1a2b3c4d5e 删除 id 为 1a2b3c4d5e 的容器
    • docker exec -it <container_id> <command>: 在正在运行的容器中执行命令。
      • 例如:docker exec -it 1a2b3c4d5e /bin/bash 进入正在运行的 id 为 1a2b3c4d5e 的容器的 bash shell。
  3. 端口映射:

    • -p <host_port>:<container_port>: 将宿主机的端口映射到容器的端口。
      • 例如:docker run -p 8080:80 -it nginx 将宿主机的 8080 端口映射到容器的 80 端口。
  4. 目录挂载:

    • -v <host_dir>:<container_dir>: 将宿主机的目录挂载到容器的目录。
      • 例如:docker run -v /home/user/mydata:/app/data -it ubuntu /bin/bash 将宿主机的 /home/user/mydata 目录挂载到容器/app/data 目录。
  5. GPU支持:

    • --gpus all: 允许容器使用所有可用的 GPU。
    • --gpus "device=<gpu_id>": 允许容器使用指定的 GPU 设备。

四、Docker 镜像的使用

  1. 拉取镜像:
    docker pull ubuntu
    
    这将从 Docker Hub 拉取最新的 ubuntu 镜像到你的本地。
  2. 运行容器
    docker run -it ubuntu /bin/bash
    
    这将基于 ubuntu 镜像创建一个新的容器,并启动 bash shell。你可以开始在容器内运行 Linux 命令。
  3. 退出容器
  4. 运行 web 服务
    docker run -d -p 8080:80 nginx
    
    • -d 后台运行容器
    • -p 8080:80 将主机的8080端口映射到容器的80端口。
    • nginx 镜像名称。

五、Dockerfile 的使用

  1. 创建 Dockerfile:

    • 在你项目的根目录创建一个名为 Dockerfile (注意没有文件后缀) 的文件。

    • 在 Dockerfile 中写入构建镜像的指令。例如:

      dockerfile">FROM python:3.9-slim-buster  # 基于 Python 镜像
      WORKDIR /app   # 设置工作目录
      COPY requirements.txt . # 拷贝依赖文件
      RUN pip install -r requirements.txt # 安装依赖
      COPY . .   # 拷贝项目代码
      CMD ["python", "app.py"]   # 运行应用程序
      
  2. 构建镜像:

    • 在你项目根目录下,使用 docker build 命令构建镜像。

      docker build -t my_app .
      
      • -t my_app 指定镜像名称为 my_app,你可以改为你想要的名称。
      • . 表示 Dockerfile 所在的当前目录。
  3. 运行容器

      docker run -p 5000:5000 -it my_app
    
    • 这将运行 my_app 镜像, 并将宿主机的 5000端口映射到容器的5000端口。

六、基本操作流程

  1. 选择或创建镜像: 从 Docker Hub 拉取现成的镜像,或者创建自己的 Dockerfile 来构建镜像。
  2. 运行容器 使用 docker run 命令创建并运行容器
  3. 容器内部运行应用程序: 使用 docker exec 进入容器内部,或者直接在 docker run 命令中执行应用程序。
  4. 管理容器 使用 docker ps, docker stop, docker start, docker rm 等命令来管理容器
  5. 删除镜像和容器 使用 docker rmi 删除镜像,使用 docker rm 删除容器

七、进阶使用

  1. Docker Compose 可以用于管理多个容器,并设置容器的网络,端口, 卷等等,可以使用 docker-compose up 命令运行应用。
  2. Docker Network 可以用于设置容器之间的网络,可以使得多个容器之间进行通信。
  3. Docker Volume 可以用于持久化数据,使得容器之间可以共享数据,或使得容器即使删除,数据也可以保留。

八、 学习资源:

  • Docker 官方文档: https://docs.docker.com/
  • Docker Hub: https://hub.docker.com/
  • Docker 教程: 有许多在线课程和教程可以帮助你学习 Docker。 例如:
  • 菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html
  • 腾讯云:https://cloud.tencent.com/developer/article/1758455

http://www.ppmy.cn/server/159952.html

相关文章

【Java】—— 基于Websocket实现页面聊天效果

基于SpringBootVue和Websocket实现页面聊天效果&#xff0c;如下&#xff1a; 一、WebSocket 的主要特点 全双工通信&#xff1a;一旦 WebSocket 连接建立&#xff0c;客户端和服务器就可以随时相互发送消息&#xff0c;而不需要一方必须先发起请求。 较少的控制开销&#xf…

「港科技」联手「地平线」打造GPT风格的自动驾驶世界模型:DrivingWorld

摘要 最近在自回归&#xff08;AR&#xff09;生成模型方面的成功&#xff0c;例如自然语言处理中的GPT系列&#xff0c;激发了在视觉任务中复制这一成功的努力。一些研究尝试将这种方法扩展到自动驾驶中&#xff0c;通过构建基于视频的世界模型来生成逼真的未来视频序列和预测…

线性变换与矩阵的关系及其在机器学习中的应用

线性变换与矩阵的关系 线性变换是数学中&#xff0c;特别是在线性代数领域&#xff0c;一个极为重要的概念。它描述了一个向量空间到另一个向量空间&#xff08;可能是同一个空间&#xff09;的一种特定类型的映射&#xff0c;这种映射保持向量的加法和标量乘法运算不变。换句…

冯·诺依曼体系结构:计算机科学的奠基石

文章目录 前言&#x1f3b7;一、冯诺依曼体系结构&#xff08;Von Neumann Architecture&#xff09;&#x1f3b8;1.1 硬件介绍&#x1f941;1. 输入设备&#x1f941;2. 输出设备&#x1f941;3. 输入输出一体化设备&#x1f941;4. 存储器&#x1f941;5. 中央处理器CPU&…

基于单片机的智能火灾报警系统设计

【文章摘要】火灾报警器是当前社会经济生产生活中较为常用的火灾预警装置,对国民经济及人员生命财产安全起到了重要的保障作用。随着现代科学技术快速发展,智能控制芯片的应用使得火灾报警器反应灵敏度大幅提升,对早期火情发现与控制起到了重要的推动作用。为此,本文以 AT8…

2025.1.15——六、SQL结构【❤sqlmap❤】

题目来源&#xff1a;ctfhub技能树 目录 一、打开靶机&#xff0c;整理已知信息 二、手工注入解题 step 1&#xff1a;查看注入类型 step 2&#xff1a;order by语句判断字段数 step 3&#xff1a;爆数据库名 step 4&#xff1a;爆表名 step 5&#xff1a;爆列名 step…

使用 Hadoop 实现大数据的高效存储与查询

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

Android 13 动态显示隐藏 HomeButton,RecentsButton

com.android.launcher3.taskbar.NavbarButtonsViewController.initButtons mEnabledValue状态<T> StatePropertyHolder(T target, IntPredicate enabledCondition,Property<T, Float> property, float enabledValue, float disabledValue) {mEnableCondition = ena…