您的位置:首页 > 娱乐 > 八卦 > 【docker】docker学习笔记

【docker】docker学习笔记

2025/8/26 1:18:31 来源:https://blog.csdn.net/weixin_43308380/article/details/141472885  浏览:    关键词:【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_projectservices:web:image: nginx:latestports:- "8080:80"  # 将容器的 80 端口映射到主机的 8080 端口volumes:- web_data:/usr/share/nginx/html  # 将名为 web_data 的卷挂载到容器中networks:- my_network  # 将服务连接到名为 my_network 的网络depends_on:- db  # 依赖于 db,先启动 dbrestart: always  # 总是重启db:image: mysql:5.7environment: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 镜像

官方文档链接

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com