Docker新手使用教程

一、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. 退出容器:
    • 在容器中输入 exit 并按回车即可退出容器。
  4. 运行 web 服务
    docker run -d -p 8080:80 nginx
    
    • -d 后台运行容器。
    • -p 8080:80 将主机的8080端口映射到容器的80端口。
    • nginx 镜像名称。

五、Dockerfile 的使用

  1. 创建 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.mzph.cn/pingmian/67319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于php求职招聘系统设计

基于php求职招聘系统设计 摘要 随着社会信息化时代的到来&#xff0c;如今人们社会的生活节奏普遍加快&#xff0c;人们对于工作效率的要求也越来越高&#xff0c;企业 举办招聘会耗时耗财&#xff0c;个人参加招聘会漫无目的寻找不到“方向”&#xff0c;网络搜索工作量目的…

SDK调用文心一言如何接入,文心一言API接入教程

一、前期准备 注册百度智能云账号&#xff1a; 前往百度智能云官网注册一个账号。这是接入文心一言API的基础。 了解API接口&#xff1a; 在百度智能云开放平台中&#xff0c;找到文心一言API的详情页&#xff0c;了解提供的API接口类型&#xff08;如云端API、移动端API、离线…

【机器学习】数据拟合-最小二乘法(Least Squares Method)

最小二乘法&#xff08;Least Squares Method&#xff09; 最小二乘法是一种广泛使用的数据拟合方法&#xff0c;用于在统计学和数学中找到最佳拟合曲线或模型&#xff0c;使得观测数据点与模型预测值之间的误差平方和最小化。以下是详细介绍&#xff1a; 基本概念 假设有一组…

Flutter 多终端测试 自定义启动画面​​​​​​​ 更换小图标和应用名称

多终端测试 flutter devices flutter run -d emulator-5554 flutter run -d emulator-5556 自定义启动画面 之前&#xff1a; 进入assert 3x 生成 1x 2x dart run flutter_native_splash:create dart run flutter_native_splash:remove 现在&#xff08;flutter_nativ…

springMVC实现文件上传

目录 一、创建项目 二、引入依赖 三、web.xml 四、编写上传文件的jsp页面 五、spring-mvc.xml 六、controller 七、运行 一、创建项目 二、引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…

Java内存与缓存

Java内存管理和缓存机制是构建高性能应用程序的关键要素。它们之间既有联系又有区别&#xff0c;理解这两者对于优化Java应用至关重要。 Java 内存模型 Java内存模型&#xff08;JMM&#xff09;定义了线程如何以及何时可以看到其他线程修改过的共享变量的值&#xff0c;并且规…

图片和短信验证码(头条项目-06)

1 图形验证码接口设计 将后端⽣成的图⽚验证码存储在redis数据库2号库。 结构&#xff1a; {img_uuid:0594} 1.1 创建验证码⼦应⽤ $ cd apps $ python ../../manage.py startapp verifications # 注册新应⽤ INSTALLED_APPS [django.contrib.admin,django.contrib.auth,…

云服务信息安全管理体系认证,守护云端安全

在数据驱动的时代&#xff0c;云计算已成为企业业务的超级引擎&#xff0c;推动着企业飞速发展。然而&#xff0c;随着云计算的广泛应用&#xff0c;信息安全问题也日益凸显&#xff0c;如同暗流涌动下的礁石&#xff0c;时刻威胁着企业的航行安全。这时&#xff0c;云服务信息…

LabVIEW与WPS文件格式的兼容性

LabVIEW 本身并不原生支持将文件直接保存为 WPS 格式&#xff08;如 WPS 文档或表格&#xff09;。然而&#xff0c;可以通过几种间接的方式实现这一目标&#xff0c;确保您能将 LabVIEW 中的数据或报告转换为 WPS 可兼容的格式。以下是几种常见的解决方案&#xff1a; ​ 导出…

创建 WordPress 插件(第一部分):添加管理页面

WordPress 是互联网上最受欢迎的内容管理系统之一。它是用 PHP 创建的&#xff0c;可以处理从博客到商业网站的一切需求。事实上&#xff0c;我们的博客和网站都使用 WordPress。在本文中&#xff0c;我将向你展示如何创建一个 WordPress 插件&#xff0c;该插件会在管理员控制…

解锁企业数据管理统一身份认证难题,EasyMR助力企业敏捷提效

在数字经济迅猛发展的当下&#xff0c;企业数据量正以令人惊叹的速度持续增长。据IDC研究显示&#xff0c;至2025年&#xff0c;全球数据总量预计将超175 ZB。数据的爆发式增长对企业而言&#xff0c;既是机遇&#xff0c;更是巨大挑战。 如今&#xff0c;大数据已然成为企业决…

OPT: Open Pre-trained Transformer语言模型

摘要 大规模语言模型通常需要数十万计算日的训练时间&#xff0c;展现了在零样本和小样本学习中的显著能力。鉴于其计算成本之高&#xff0c;这些模型在没有大量资本投入的情况下难以复现。对于那些通过API提供的少数模型&#xff0c;研究者无法获取完整的模型权重&#xff0c…

Qt应用之MDI(多文档设计)

qt creator 版本6.8.0 MinGW 64bit 由此模块可以扩展成设计一个qt文本编辑器。 界面如下 部分功能展示如下 新建文件 打开文件 mdi模式、级联模式和平铺模式 界面和程序构建过程。 1.如图所需.cpp和.h文件 2.mainwindow.ui和tformdoc.ui界面布局如下 不懂什么是Action如何…

Linux第二课:LinuxC高级 学习记录day04

6、shell中的语句 6.3、结构性语句 6.3.1、if if…then…fi 1、结构 1&#xff09;基本结构 if 表达式 then 命令表 fi if [ 表达式 ] // 【】两侧有空格 then 命令表 fi 2&#xff09;分层结构 if 表达式 then 命令表1 else 命令表2 fi 3&#xff09;嵌套结构 if …

Linux C 使用ZBar库解析二维码和条形码

1. 编译zbar库 下载 zbar 库源码&#xff0c;这里需要注意下&#xff0c;如果识别的二维码中有中文的话&#xff0c;会出现乱码&#xff0c;一般二维码里中文为UTF-8编码&#xff0c;zbar会默认给你把UTF-8转换为ISO8859-1。有两种解决办法&#xff0c;一是自己再转换一下编码…

【北京迅为】iTOP-4412全能版使用手册-第七十九章 Qt网络编程

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

用python实战excel和word自动化

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 python实现excel和word自动化--批量处理 前言--需求快要期末了需要&#xff0c;提交一个年级的学生成绩数据&#xff0c;也就是几百份。当前我们收集了一份excel表格&#xf…

【R安装】R语言的详细安装及环境配置(2024年11月)

目录 R及Rstudio下载R下载Rstudio下载 R及Rstudio安装R安装Rtools 安装Rstudio安装 运行 RStudio通过RStudio配置使用特定的R版本 参考 R及Rstudio下载 R下载 R官网-The R Project for Statistical Computing 点击【download R】&#xff0c;进入下载界面&#xff1a; 选择…

Docker官网安装

1.官网 官方文档 https://www.docker.com/ Docker Hub官网 镜像 https://hub.docker.com/ 2.Docker 的三要素 1、镜像 2、容器 3、仓库 小总结 3.Docker 平台架构图 &#xff08;架构版本&#xff09; 4.安装Docker CentOS | Docker Docs 1.确定你是CentOS7及以上版本 …

寒假第一次牛客周赛 Round 76回顾

AC数&#xff1a;2&#xff08;A、C&#xff09; B 思路&#xff1a; 等价于求&#xff1a; 数量最多的字符 #include<stdio.h> int main() {int n,num;int a[26]{0};//用于存储字母 a 到 z 的出现次数。scanf("%d",&n);char s[n];scanf("%s",s)…