【Docker】个人笔记

news2024/9/28 7:26:41

文章目录

  • Docker三个基本概念
    • 镜像(Image)
    • 容器(Container)
    • 仓库(Repository)
  • Docker命令
    • 基础命令
      • 查看版本信息
      • 显示详细信息
      • 从仓库拉取镜像
      • 列出本地存储的镜像
      • 删除一个或多个镜像
      • 列出所有运行中的容器
      • 运行一个新的容器
      • 停止一个运行中的容器
      • 启动一个已停止的容器
      • 重启一个容器
      • 删除一个或多个容器
      • 在运行中的容器中执行命令
      • 获取容器的日志
    • 镜像管理
      • 从Dockerfile构建一个镜像
      • 为镜像打标签
      • 将镜像推送到Docker仓库
      • 从Docker仓库中拉取镜像
    • 网络管理
      • 列出所有Docker网络
      • 创建一个新的Docker网络
      • 删除一个或多个Docker网络
      • 查看Docker网络的详细信息
    • 卷管理
      • 列出所有Docker卷
      • 创建一个新的Docker卷
      • 删除一个或多个Docker卷
      • 查看Docker卷的详细信息
    • Dockerfile
    • Docker Compose
      • 通俗理解
      • Docker Compose 的作用
      • 举例说明
      • 使用 Docker Compose
      • 优点
      • 小结


Docker 开源的 应用容器引擎 Go语言开发的
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化

Docker三个基本概念

镜像(Image)

Docker 镜像是一种轻量级、独立的、可执行的软件包,它包含了运行某个软件所需的所有元素。镜像是不可变的,创建后不能更改,但可以用作构建新镜像的基础。

比喻:
想象一下,它就像一本食谱(Recipe),详细列出了如何制作某道菜。这个食谱包含了所有的步骤和所需的食材。

食谱:代表 Docker 镜像
所需的食材和步骤:代表应用程序、依赖库、配置文件等
有了这本食谱(Docker 镜像),你和别人都能按照同样的步骤做出一样的菜。

容器(Container)

Docker 容器是基于镜像创建的一个运行实例,它包含了应用程序及其所有依赖项,运行在一个完全隔离的环境中。容器是动态的,可以启动、停止、移动和删除。

比喻:
容器就像是你根据食谱(Docker 镜像)做出来的那道实际的菜。你可以吃这道菜,也可以把它装进饭盒里带走。

实际的菜:代表 Docker 容器
装进饭盒里带走:代表容器的便携性和可移植性
有了这道菜(Docker 容器),你可以随时享用,也可以带到任何地方,和别人分享。

仓库(Repository)

集中存放镜像文件的场所


Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。
Docker 镜像是用于创建 Docker 容器的模板

容器与镜像的关系类似于面向对象编程中的对象与类。
在这里插入图片描述

Docker命令

基础命令

查看版本信息

docker version

显示详细信息

docker info

从仓库拉取镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 例如:
docker pull ubuntu:latest

列出本地存储的镜像

docker images

删除一个或多个镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]
# 例如:
docker rmi ubuntu:latest

列出所有运行中的容器

docker ps [OPTIONS]
# 列出所有容器(包括停止的容器):
docker ps -a

运行一个新的容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 例如,运行一个交互式的 Ubuntu 容器:
docker run -it ubuntu:latest /bin/bash

常用选项:
-d:后台运行容器。
-p:端口映射。
-v:挂载卷。
–name:给容器命名。
-e:设置环境变量。

停止一个运行中的容器

docker stop [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker stop my_container

启动一个已停止的容器

docker start [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker start my_container

重启一个容器

docker restart [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker restart my_container

删除一个或多个容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker rm my_container

在运行中的容器中执行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 例如,在容器中打开一个交互式 shell:
docker exec -it my_container /bin/bash

获取容器的日志

docker logs [OPTIONS] CONTAINER
# 例如:
docker logs my_container

镜像管理

从Dockerfile构建一个镜像

docker build [OPTIONS] PATH | URL | -
# 例如,从当前目录的 Dockerfile 构建镜像:
docker build -t my_image:latest .

为镜像打标签

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 例如:
docker tag my_image:latest my_repo/my_image:v1.0

将镜像推送到Docker仓库

docker push [OPTIONS] NAME[:TAG]
# 例如:
docker push my_repo/my_image:v1.0

从Docker仓库中拉取镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 例如:
docker pull ubuntu:latest

网络管理

列出所有Docker网络

docker network ls

创建一个新的Docker网络

docker network create [OPTIONS] NETWORK
# 例如:
docker network create my_network

删除一个或多个Docker网络

docker network rm NETWORK [NETWORK...]
# 例如:
docker network rm my_network

查看Docker网络的详细信息

docker network inspect NETWORK
# 例如:
docker network inspect my_network

卷管理

列出所有Docker卷

docker volume ls

创建一个新的Docker卷

docker volume create [OPTIONS] [VOLUME]
# 例如:
docker volume create my_volume

删除一个或多个Docker卷

docker volume rm VOLUME [VOLUME...]
# 例如:
docker volume rm my_volume

查看Docker卷的详细信息

docker volume inspect VOLUME
# 例如:
docker volume inspect my_volume

常用选项详解
-d:后台运行容器。
-it:运行一个交互式终端。
-p:端口映射,格式为HOST_PORT:CONTAINER_PORT。
-v:挂载卷,格式为HOST_PATH:CONTAINER_PATH。
-e:设置环境变量。
–name:为容器指定名称。
–rm:容器退出后自动删除容器。
–network:指定容器加入的网络。

Dockerfile

Dockerfile 是一个文本文件,包含了构建Docker镜像所有指令
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像

Docker Compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具
通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个简单的配置文件,你可以使用 Docker Compose 来配置应用程序的服务,并使用单个命令启动所有服务。

通俗理解

假设你有一个复杂的应用程序,它需要多个组件来一起工作,比如:

  1. Web服务器:处理用户的 HTTP 请求。
  2. 数据库:存储应用程序的数据。
  3. 缓存服务器:加速数据访问,提高性能。

如果你要手动启动这些服务,你需要分别运行多个 docker run 命令,这可能会变得非常复杂和容易出错。特别是当你需要在不同的环境(如开发、测试和生产)中运行应用程序时,管理这些服务的配置会变得更加困难。

Docker Compose 的作用

Docker Compose 通过一个配置文件(通常命名为 docker-compose.yml)来定义所有这些服务。这个配置文件可以包括:

  • 每个服务使用的镜像。
  • 服务之间的依赖关系。
  • 网络和卷的配置。
  • 环境变量。

举例说明

假设你有一个简单的应用程序,有一个 Web 服务器和一个数据库。你可以创建一个 docker-compose.yml 文件来定义这些服务:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example

这个文件定义了两个服务:

  1. web 服务:使用最新版本的 Nginx 镜像,并将主机的 8080 端口映射到容器的 80 端口。
  2. db 服务:使用最新版本的 MySQL 镜像,并设置一个环境变量来定义 MySQL 的根密码。

使用 Docker Compose

  1. 启动服务

    通过运行以下命令,Docker Compose 会根据配置文件启动所有服务:

    docker-compose up
    
  2. 停止服务

    运行以下命令可以停止所有服务:

    docker-compose down
    
  3. 查看服务状态

    你可以使用以下命令查看运行中的服务状态:

    docker-compose ps
    

优点

  • 简化多容器管理:不用手动启动和停止每个容器,简化操作。
  • 一致的开发环境:所有开发人员都可以使用相同的配置文件,确保一致的开发环境。
  • 易于扩展:可以轻松添加或删除服务,调整配置。

小结

Docker Compose 让你能够通过一个简单的配置文件来管理多容器应用,简化了复杂应用的部署和管理。无论是在开发环境还是生产环境,它都能帮助你更高效地管理服务。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089115.html

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

相关文章

论文泛读: DETRs Beat YOLOs on Real-time Object Detection

[toc[ DETRs Beat YOLOs on Real-time Object Detection 论文地址: https://openaccess.thecvf.com/content/CVPR2024/html/Zhao_DETRs_Beat_YOLOs_on_Real-time_Object_Detection_CVPR_2024_paper.html 代码地址: https://zhao-yian.github.io/RTDETR 动机 现状 YOLO系列因…

车联网技术在智能交通系统中的设计与实现(论文+源码)

1系统方案设计 根据系统设计需求,展开系统详细方案设计。如图2.1所示为系统设计结构框图。系统以STM32单片机为主控制器,利用ATGM336 GPS模块实现车辆实时定位,借助倾斜检测模块监测车辆倾斜角度,并通过OLED液晶显示器实时显示监…

揭晓9款敏捷团队必备的协作工具选择

本文将介绍9款团队协作工具:1.Worktile;2. PingCode;3. 融云 (RongCloud);4. 好团队;5. 微软Teams;6. 小钉贴;7. Lark;8. Bit.ai;9. Hive。 在敏捷开发团队中&#xff0c…

Veeam Backup Replication v12.2 发布,新增功能概述

Veeam Backup & Replication v12.2 发布,新增功能概述 Veeam Data Platform | 面向混合云和多云的 备份和恢复 监控和分析 恢复编排 请访问原文链接:https://sysin.org/blog/veeam-backup-12/,查看最新版。原创作品,转载请保…

烂大街的测试左移和右移

01 测试左移与右移的定义 通俗的讲:左移是往开发阶段移,右移是往发布之后移。 正常测试:提测后的测试工作——到——发布验证完成阶段。 测试左移:提测之前的测试。 如:代码单元测试,代码质量检测&#x…

数据结构的三要素以及数据类型和抽象数据类型

一.数据结构的三要素: 二.逻辑结构: 三.数据的运算: 三.数据的物理结构(存储结构): 1.数据的存储结构:有4种 顺序存储 链式存储 索引存储 散列存储 注:顺序存储数据之间必须相…

没有编程基础?这款数据分析工具也能轻松上手

在当前快节奏的工业环境中,工厂管理者越来越依赖数据分析来优化生产流程、提升效率、降低成本。然而,很多传统的数据分析工具不仅操作复杂,而且费用高昂,让不少工厂望而却步。最近,我发现了一款非常实用的报表工具&…

[MySql]保姆级上手教程

介绍 通过数据库管理系统, 编写执行SQL语句, 实现对数据库数据的管理 数据库(DataBase): 储存和管理数据的仓库数据库管理系统(DBMS): 操作和管理数据库的软件SQL语言: 操作关系型数据库的通用语言数据库可以分为关系型数据库和非关系型数据库 相关产品 常见的关系型数据库产…

STM32G474之TIM1捕获1模式

STM32G474采用TIM8产生方波信号,使用TIM1工作于捕获1模式,并计算方波频率。捕获方波周期,在有些开发中,还是能用到。建议开发时使用HAL库自带的库函数。使用寄存器方法也可以实现,但是后期修改不太方便。 测试时&…

springboot学习(2)

1、springboot入门 需求:使用 Springboot 开发一个 web 应用,浏览器发起请求 /hello 后,给浏览器返回字符串 "hello world!" 2、基本尝试步骤 创建Maven工程导入 spring-boot-starter-web (起步依赖)编写Controller提供启动类 &…

无人机 PX4 飞控 | ROS应用层开发:offboard 模式切换详细总结

无人机 PX4 飞控 | ROS应用层开发:offboard 模式切换详细总结 PX4 offboard 模式介绍通过mavros 进行offboard模式切换代码测试 通过地面站进行offboard模式切换通过遥控器拨杆切换offboard模式 PX4 offboard 模式介绍 PX4 是一个广为熟知的开源飞控软件&#xff0…

Yolo环境搭建(深度学习基础环境)

需要安装的东西 CUDAcuDnn魔法 一、CUDA安装(Windows10环境) 第一:下载驱动 第二:查看显卡支持的最高CUDA的版本,以便下载对应的CUDA安装包 第三:确定CUDA版本对应的cuDNN版本,这个其实不用太关注,因为…

宾得相机sd卡格式化了怎么办?分享应对之策

对于摄影爱好者而言,‌相机不仅是捕捉美好瞬间的设备,‌更是珍藏回忆的宝库。‌然而,‌在使用宾得相机的过程中,‌可能会遇到SD卡意外格式化的情况,‌这无疑给许多摄影爱好者带来了不小的困扰。‌SD卡格式化后&#xf…

Shell脚本入门:多命令处理

我的后端学习大纲 我的Linux学习大纲 1.什么是多命令处理 1.多命令处理就是在Shell脚本文件中编写多个Shell命令 2.入门案例: 2.1.需求介绍: 1.在已知目录/root/itheima目录,执行batch.sh脚本,实现在/root/itheima/目录下创建一…

PDF文本指令解析与文本水印去除

上次我在《PDF批量加水印 与 去除水印实践》一文中完成了对图片水印和文字水印的去除。 链接:https://xxmdmst.blog.csdn.net/article/details/139483535 但是对于页面对象的内容对象是单层,不是数组的情况,无法去除水印。今天我们专门研究…

Error running tomcat: Can‘t find catalina.jar

一、错误描述: 在运行 java-web项目时出现报错:Error running tomcat: Can‘t find catalina.jar 二、错误原因: tomcat的路径错误,在idea中配置正确的tomcat路径 三、解决方法: 1.点击EditConfigurations 2.点…

如何通过WinRAR软件有效禁止RAR压缩包内文件的修改

RAR压缩包作为一种广泛使用的文件格式,凭借其高压缩比和强大的功能,成为了许多用户保存和传输文件的首选。然而,在某些情况下,我们可能希望确保RAR压缩包内的文件不被随意修改或删除,以维护文件的安全性和完整性。本文…

CANoe入门(四) :全真实节点阶段和真实节点和部分仿真节点共存阶段,读取和模拟数据

1. 前言 前篇文章我们在CANoe全仿真阶段,模拟数据和信号。这篇文章,我们来看下全真实节点阶段和真实节点和部分仿真节点共存阶段,怎么读取数据信号,和模拟发送数据信号。 2. 全真实节点阶段 全真实节点阶段,所有的 …

LeetCode_sql_day18(1841.联赛信息统计)

描述 表: Teams ------------------------- | Column Name | Type | ------------------------- | team_id | int | | team_name | varchar | ------------------------- team_id 是该表主键. 每一行都包含了一个参加联赛的队伍信息.表: Matches -------…

StarShip v0.5版本更新

CodeSouler更新 IDE插件(CodeSouler) 01 代码补全优化 🚀 解决了Tab操作与IDE自带补全的冲突。 优化代码补全机制,调整触发逻辑并改进防抖算法,减少编码干扰。 修复了JetBrains插件中的多余 ) 和 } 符号问题。 02 代…