当前位置: 首页 > article >正文

【docker】docker学习笔记

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.kler.cn/a/284885.html

相关文章:

  • 【MATLAB代码】二维平面上的TDOA,使用加权最小二乘法,不限制锚点数量,代码可复制粘贴
  • Qt 编写插件plugin,支持接口定义信号
  • 生成模型——PixelRNN与PixelCNN
  • 十九:Spring Boot 依赖(4)-- spring-boot-starter-security依赖详解
  • 【考研数学:高数2】数列极限
  • 【时间之外】IT人求职和创业应知【34】-人和机器人,机器人更可靠
  • Datawhale AI夏令营 第五期 CV方向 Task3笔记
  • GD - GD32350R_EVAL - PWM实验和验证1
  • React原理之Diff算法
  • ESP32-S3 IDF框架 控制 WS2812 灯条:实现多种灯效
  • 【通过h5作为中转页跳转到微信小程序】
  • 【Linux】06.Linux 下的编译器——gcc/g++
  • 【C++ 第十八章】C++11 新增语法(2)
  • vue3+el-tale封装(编辑、删除、查看详情按钮一起封装)
  • 【HarmonyOS 4.0】@ohos.router 页面路由
  • ★ 算法OJ题 ★ 力扣11 - 盛水最多的容器
  • sqlite3 数据插入效率
  • YOLOv8改进 | 模块缝合 | C2f融合卷积重参数化OREPA【CVPR2022】
  • Having trouble using OpenAI API
  • 回归预测|基于鹅GOOSE优化LightGBM的数据回归预测Matlab程序 多特征输入单输出 2024年优化算法
  • vue3本地运行错误集
  • 5.3 MySql实战
  • Xilinx FPGA在线升级——升级思路
  • 鸿蒙开发5.0【基于Swiper的页面布局】
  • LeetCode 热题100-9 找到字符串中所有字母异位词
  • vscode 未定义标识符 “uint16_t“C/C++(20) 但是可以顺利编译