【docker】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 镜像

官方文档链接

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值