【Docker】个人笔记

文章目录

  • 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:latestports:- "8080:80"db:image: mysql:latestenvironment: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.mzph.cn/news/878310.shtml

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

相关文章

回归预测|基于卷积神经网络-鲸鱼优化-最小二乘支持向量机的数据回归预测Matlab程序 CNN-WOA-LSSVM

回归预测|基于卷积神经网络-鲸鱼优化-最小二乘支持向量机的数据回归预测Matlab程序 CNN-WOA-LSSVM 文章目录 一、基本原理1. 数据预处理2. 特征提取(CNN)3. 参数优化(WOA)4. 模型训练(LSSVM)5. 模型评估和优…

(最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)

(最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题) 岗位——硬件技术工程师 岗位意向——单板硬件开发 真题题目分享,完整版带答案(有答案和解析&#xff0…

单位的一位干部去世了,该单位领导参加他的追悼会致辞是这样写的?

单位的一位干部去世了,该单位领导参加他的追悼会致辞是这样写的? 这是一篇单位工会领导参加本单位一位普通干部追悼会的致词 (范文点评) 胡某晔同志追悼会悼词 各位来宾、各位亲友: 今天,我们怀着十分沉痛…

基于深度学习的单目标跟踪系统

基于深度学习的单目标跟踪,效果吊打传统算法,3060显卡上达到实时,代码python和c两个版本都有。 基于深度学习的单目标跟踪系统是一种先进的计算机视觉技术,它可以实现实时的、高精度的目标跟踪。与传统的基于特征匹配或模板匹配的…

【宝马中国-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

关于武汉芯景科技有限公司的实时时钟芯片XJ8337开发指南(兼容DS1337)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.时钟功能 2.闹钟功能(两个闹钟) 3.振荡器停止控制 4.频率输出(1HZ、1.096KHZ、8.192KHZ、32.768KHZ) 5.振荡器停止检测 6.闹钟中断标志 四、程序代…

#C++ 笔记三

七、异常处理 1.概念 异常是程序在执行期间产生的问题。 C异常是指在程序运行时发生的特殊情况,比如下标越界等。 异常提供了一种转移程序控制权的方式。 2.抛出异常 throw语句的操作数可以是任意表达式,表达式结果的类型决定了抛出异常的类型。 …

进程和线程(操作系统八股文part2)

一个操作系统的进程和线程部分的笔记,大部分来源于:小林coding和Javaguide,以及操作系统黑书。 进程和线程 什么是进程 运行中的程序叫进程**(Process)**。 进程是资源分配的最小单位,线程是执行的最小…

redis分布式是如何实现的(面试版)

需要结合项目中的业务进行回答,通常情况下,分布式锁使用的场景:集群情况下的定时任务、抢单、幂等性场景。 下面先来看一个抢卷场景: 以下情况会出现超卖情况: 因为线程会交替执行,所以线程查询优惠价的数…

Socket编程---UDP篇

目录 一. UDP协议 二. Socket编程 2.1 sockaddr家族 2.2 接口介绍 三. 服务端实现 四. 服务端调用实现 五. 客户端实现 六. 效果展示 一. UDP协议 何为UDP协议的含义,上篇粗略提及了一下TCP与UDP的区别: TCP: •…

SpringBoot集成kafka-消息转发@sendTo()注解

SpringBoot集成kafka-消息转发sendTo 1、消费者2、生产者3、实体类对象4、JSON工具类5、配置文件application.yml6、测试类7、测试 1、消费者 启动消费者进行消息监听,消费者A监听到生产者发送的消息使用sendTo()注解将消息转发给消费者B package com.power.consu…

Django+Vue二手交易平台的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…

cesium 地形获取和生成

1.先从网上下载12.5m精度的地形,然后叠加无人机的地形数据 2.使用global mapper pro合并并导出完整的tiff 3.使用cesiumLab进行tiff的文件数据切片生成terrain格式的数据

.NET HandyControl 深度解析:一个现代化的UI控件库

文章目录 前言一、选择HandyControl的原因二、如何使用HandyControl1.安装HandyControl2.使用代码例子 总结 前言 在.NET开发领域,UI(用户界面)设计的美观性和易用性对于应用程序的成功至关重要。为了帮助开发者快速构建现代化、美观且用户友…

如何使用住宅代理获取价格对比和更多选择

在购物和预订过程中,网站通常会根据用户的地理位置提供不同的价格和库存信息。这种做法称为地理定价或区域定价。使用静态住宅代理可以帮助用户准确查看他们想要了解的区域,获得更多选择和更优惠的价格。 查找更低的价格: 价格差异&#xff1…

CSS\JS实现页面背景气泡logo上浮效果

效果图&#xff1a; 单容器显示气泡&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Bu…

c++习题27-大整数减法

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 输入 共2行&#xff0c;第1行是被减数a&#xff0c;第2行是减数b(a > b)。每个大整数不超过200位&#xff0c;不会有多余的前导零。 输出 一行&#xff0c;即所求的差。 样例输入1…

精密机械零件加工企业为制造业提供关键支撑

在当今高度发达的制造业中&#xff0c;精密机械零件加工企业扮演着至关重要的角色&#xff0c;以其精湛的工艺和严谨的态度&#xff0c;为制造业的各个领域提供着关键的支撑。 一、高精度制造&#xff0c;奠定产品质量基础 精密机械零件加工企业以其精湛的加工技术&#xff0c;…

android studio 设置gradle jdk

1. 左上角点击file 2. 按照如下点击&#xff1a; 3. 即可修改gradle jdk

灵办AI搜索引擎和文档总结工具

前言—— 在信息爆炸的时代&#xff0c;如何高效地获取和处理知识成为了每个人面临的挑战。随着人工智能技术的迅猛发展&#xff0c;本文将深入探讨这一创新工具的功能与优势&#xff0c;以及如何在日常生活和工作中充分利用它&#xff0c;开启智能化的信息获取新篇章。 点击…