【docker】docker学习笔记

news2024/9/22 21:33:01

docker学习笔记

    • 0. docker 基本命令
    • 1. docker存储
      • 1.1 目录挂载
      • 1.2 卷映射
    • 2. docker 网络
        • 2.1 机器ip访问
        • 2.2 容器ip访问
        • 2.3 域名访问
    • 3. docker compose(批量管理)
      • 3.1 编写一个`yml`文件:
      • 3.2 docker compose 命令
    • 4. 制作docker 镜像

0. docker 基本命令

docker常用命令:(配合[option]使用)
在这里插入图片描述
图片来源: b站docer教程

1. docker存储

1.1 目录挂载

  • 容器内部数据管理不方便
  • 存储容器数据(容器有自己的文件系统,容器删除的时候也一起被删除,但是挂载的文件夹还存在)
docker run -d -p:88:80 -v app/example:usr/share/html [docker_image] --name app01
-d : 后台启动
-p: 端口映射
-v: 目录挂载

外部文件夹app/example/挂载在了容器内部usr/share/html(初始化内容以外部为准)。

1.2 卷映射

目录挂载初始化的时候以外部的为准,在需要修改配置文件的时候,如果使用目录挂载,除非已经提前在外部放好了配置文件,那么容器内部的默认配置文件和外部的一样为空。

所以需要使用卷映射(初始化内容以内部为准),docker的卷默认在/var/lib/docker/volumes/下:

docker run -v 卷名:要映射的位置

这个命令会自动在/var/lib/docker/volumes/下创建一个卷名.
也可以手动创建volume

		docker volume create volume-name  // 创建volume(也在默认目录下)
		docker volume ls  // 查看
		docker volume inspect volume-name  // 查看卷详情

2. docker 网络

2.1 机器ip访问
  • docker容器之间相互访问可以通过外部机器的ip:port
    • 缺点:需要通过外部机器的 ip
2.2 容器ip访问
  • docker0给每个容器分配同个网关下的唯一ip:可以使用inspect命令获取:
    docker container inspect container-name : 查看容器详情
    
  • 然后使用局域网进行访问。(此时使用docker containerport)
    • 缺点:ip有可能重新分配等会带来变化。
2.3 域名访问
  • docker0默认不支持主机域名。
  • 创建自定义网络,容器名就是稳定的域名:
docker network create mynet  // 创建一个自定义网络
docker network ls  // 查看网络

# docker run 的时候添加自定义网络
docker -d -p 88:80 --network mynet --name app01

此时查看容器信息,已经有了DNS域名:
使用container-name当作域名进行访问。

3. docker compose(批量管理)

docker compose 可以进行批量管理增量更新

3.1 编写一个yml文件:

官方文档

name: my_project

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"  # 将容器的 80 端口映射到主机的 8080 端口
    volumes:
      - web_data:/usr/share/nginx/html  # 将名为 web_data 的卷挂载到容器中
    networks:
      - my_network  # 将服务连接到名为 my_network 的网络
    depends_on:
      - db  # 依赖于 db,先启动 db
    restart: always  # 总是重启

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example  # 设置 MySQL root 用户的密码
      MYSQL_DATABASE: mydatabase     # 创建一个名为 mydatabase 的数据库
    ports:
      - "3306:3306"  # 将容器的 3306 端口映射到主机的 3306 端口
    volumes:
      - db_data:/var/lib/mysql  # 将名为 db_data 的卷挂载到 MySQL 数据目录
    networks:
      - my_network  # 将服务连接到名为 my_network 的网络
  
    restart: always  # 总是重启

volumes:
  web_data:  # 定义一个名为 web_data 的卷
  db_data:   # 定义一个名为 db_data 的卷

networks:
  my_network:  # 定义一个名为 my_network 的自定义网络

3.2 docker compose 命令

  • 启动:(下载并创建然后运行容器)
docker compose up -d  # 文件名是 compose.yml  -d:后台启动
docker compose -f file.yml up -d  # 文件名为 file
  • 下线(移除所有容器和网络,默认保留卷
docker compose down  # 文件名是 compose.yml
docker compose -f file.yml down  # 文件名为 file
docker compose -f file.yml down -v  # -v:删除卷  --rmi 指定删除的镜像

其他的--help看下。

4. 制作docker 镜像

官方文档链接

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

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

相关文章

【JAVA】jdk下载与安装、配置环境

【JAVA】jdk下载与安装、配置环境 一、下载jdk二、安装jdk三、配置环境四、测试环境变量是否设置成功五、特殊情况六、idea官网 一、下载jdk Oracle官网: https://www.oracle.com/点击 “ Products ” “ 下滑 ”,点击 “ Java ” 点击 “ Download Java ” 先选择…

智慧公厕:城市公共卫生间智慧之选@卓振思众

在现代城市生活中,公共设施的智能化已经成为提升市民生活质量的重要一环。而智慧公厕作为公共卫生设施的创新代表,正逐步改变我们对传统公共厕所的认知,为城市管理带来了前所未有的便捷与舒适。【卓振思众】 环境智能调控,提升使用…

【逐行注释】一维EKF滤波的MATLAB代码|*不需要下载*,直接复制到MATLAB即可运行

文章目录 介绍完整代码运行结果各模块含义介绍 这是一个状态量为一维的MATLAB下的滤波程序,使用的滤波方法是EKF(扩展卡尔曼滤波),滤波后,显示滤波值的曲线、滤波误差曲线、滤波误差的最大值、平均值、标准差的输出。 模型是非线性的(状态方程和观测方程都是非线性的),…

RuoYi-Vue 最新 SpringBoot3 前后端分离版本源码分析

RuoYi-Vue 最新 SpringBoot3 前后端分离版本源码分析 RuoYi-Vue 本地环境部署权限管理SpringSecurity 配置登录接口(认证管理)Authentication 认证token的生成 权限控制 异步任务管理操作日志数据权限 RuoYi-Vue 本地环境部署 直接去 gitee 上拉取最新版本即可,分支…

comfyUI好在哪?为啥大家都在用?

前言 comfyUI自从面世以来,就以一种潜力股的姿态快速流行了起来,越来越多的小伙伴开始使用comfyUI。也许你一开始会被comfyUI密密麻麻的“线路”吓到,但其实comfyUI也没那么复杂,并且好处多多。 本文将带大家一起,快…

2024年8月31日(星期六)骑行瓦恭村

2024年8月31日 (星期六)骑行瓦恭村(向日葵,谷花鱼),早8:30到9:00, 昆明氧气厂门囗集合,9:00准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:昆明氧气厂…

华为Huawei路由器交换机SSH配置

华为设备的SSH登录配置需要5个步骤,示例如下: 一、配置命令 使能SSH功能 stelnet server enable生成公钥 rsa local-key-pair create 1024配置AAA用户密码及相应授权 aaalocal-user xxx password cipher xxxyyy1234local-user xxx privilege level …

RAG必备知识:OpenAI官宣结构化输出|结构化输出工具大汇总

官宣:根据非常普遍的需求,OpenAI的API 中开始支持结构化输出。 在 API 中引入结构化输出 - 模型输出现在遵循开发人员提供的 JSON 模式。让大型语言模型(Large Language Models, LLMs)进行结构化输出是自然语言处理(NLP)领域中的一个重要目标。结构化输出指的是将自然语…

Java SpringBoot结合Vue打造法律援助平台,实现高效在线法律咨询服务

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

布偶猫应该怎么喂?希喂、交响乐金罐、尾巴生活彩虹泥适合布偶猫吗?

我开了家布偶猫咖,这些长相甜美可爱的小家伙超会撒娇卖萌,把客人迷的团团转。布偶猫又叫仙布拉多尔猫,它是现存体型最大、体重最重的猫之一,它们体型大,食量也大,但肠胃却特别弱,所以一定要特别…

Mac环境下Python3虚拟环境创建、Flask安装以及创建运行第一个最小的Flask项目

为什么要使用虚拟环境?随着你的 Python 项目越来越多,你会发现不同的项目会需要 不同的版本的 Python 库。同一个 Python 库的不同版本可能不兼容。 虚拟环境可以为每一个项目安装独立的 Python 库,这样就可以隔离不同项目之间的 Python 库&…

普通人怎么利用ai赚钱?这10个AI帮你实现!

以前我是真想不到,AI写的破文章,复制粘贴发出去竟然有收入? 今天先码住10个ai工具,下次更新10投稿文章获得收入的平台! 1、豆包:完全免费,ai对话里有一个功能叫做网页摘要,可以把你…

从源码到产品:视频美颜SDK与直播美颜插件的开发详解

开发一款高效的视频美颜SDK与直播美颜插件,不仅需要深入理解图像处理技术,还需要考虑到性能优化、跨平台支持等多个方面的挑战。接下来,笔者将从源码开发的角度,详解视频美颜SDK与直播美颜插件的开发过程。 一、视频美颜SDK的核心…

ai取名生成器在哪?建议看看这篇文章

ai取名字叫什么好听?你是否在为给孩子、宠物或是项目起一个既独特又好听的名字而烦恼?别担心,AI取名字软件来帮你解锁命名新境界! 现在有很多智能工具利用先进的人工智能技术,可以为你量身定制一系列令人耳目一新的名…

选择个人开发者进行软件开发的潜在风险分析

在科技飞速发展的今天,软件开发行业正变得越来越精细化和专业化,对专业技能和团队协作能力的需求日益增长。虽然在某些情况下,雇佣个人开发者似乎成本较低且操作简便,但其背后隐藏的挑战和风险同样不容小觑。本篇分析将探讨选择个…

使用Dockerfile创建应用镜像

在Docker file中定义所需要执⾏的指令,使⽤ docker build创建镜 像,过程中会按照dockerfile所定义的内容进⾏打开临时性容器,把 docker file中命令全部执⾏完成,就得到了⼀个容器应⽤镜像,每 ⼀⾏命令都会出现容器&…

axure9树形元件节点的添加

树形元件 | AxureChina 在需要添加节点处右键添加->添加子节点

Prometheus+exporter+Grafana

参考文档:https://www.cnblogs.com/morang/p/devops-prometheus-grafana-install-use-db-site-monitor.html Prometheus:监控中心,监控exporter的实时数据 exporter:采集数据工具,如下: Grafana&#xff…

超详细!!!uniapp通过unipush全流程实现app消息推送

云风网 云风笔记 云风知识库 一、HBuilder新建APP项目 二、配置推送服务 1、登录Dcloud开发者中心开发者中心,查看我的应用 2、生成云端证书 3、创建平台信息 4、配置推送服务信息 这里需要关联服务空间,可以申请免费服务空间进行测试 三、代码配置 1…

IOS 17 基于UITabBarController实现首页TabBar

实现方式 创建首页MainController继承自UITabBarController就可以实现Tabbar效果。 实现效果 创建几个子控制器 创建子控制器 DiscoveryController,VideoController,MeController,FeedController,RoomController,继…