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

从0到1入门Docker

一、快速入门

Docker run命令中的常见参数

  • -d:让容器后台运行
  • --name:给容器命名(唯一)
  • -e:环境变量
  • -p:宿主机端口映射到容器内端口
  • 镜像名称结构:Repository :TAG(镜像名:版本号)

二、Docker基础

1.常见命令

Docker最常见的命令就是操作镜像,容器的命令

2.数据卷

(1)介绍

数据卷(volume)是一个虚拟目录,是容器内目录宿主机目录之间映射的桥梁,方便我们操作容器内文件,或者方便迁移容器产生的数据

(2)数据卷常见命令

(3)如何挂载数据卷

创建容器时,使用

docker run -v 数据卷名:容器内目录

完成挂载,在容器创建时,如果发现挂载的数据卷不存在时,会自动创建

(4)本地目录挂载

docker run -v 本地目录:容器内目录

可以完成本地目录挂载,本地目录必须以“ ”或“ ./ ”开头,如果直接以名称开头,会被识别为数据卷而非本地目录

3.自定义镜像

镜像就是包含了应用程序,程序运行的系统函数库,运行配置等文件的文件包。构建镜像的过程其实就是把上述文件分层打包的过程。

(1)镜像结构

(Layer)

添加安装包,依赖,配置等,每次操作都形成新的一层

基础镜像(BaseImage)

应用依赖的系统函数库,环境,配置,文件等

入口(Entrypoint)

镜像运行入口,一般是程序启动的脚本和参数

(2)Dockerfile

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来描述要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像,常见指令如下:

示例:

当编写好了Dockerfile,可以利用下面命令来构建镜像:

docker build -t 镜像名 Dockerfile目录  .

其中:

  • -t:是给镜像起名,格式依然是repository:tag,不指定tag时,默认为latest
  • :是指定Dockerfile所在目录,如果就在当前目录,则指定为“.”

4.容器网络互连

默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上:

加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作命令如下:

三、项目部署

1.Docker Compose

Docker Compose通过一个单独的docker-compose.yml模板文件(YAML文件)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署

示例:

version: "3.8"

services:
  mysql:
    image: mysql
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "./mysql/conf:/etc/mysql/conf.d"
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/init:/docker-entrypoint-initdb.d"
    networks:
      - hm-net
  hmall:
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: hmall
    ports:
      - "8080:8080"
    networks:
      - hm-net
    depends_on:
      - mysql
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - "18080:18080"
      - "18081:18081"
    volumes:
      - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
      - "./nginx/html:/usr/share/nginx/html"
    depends_on:
      - hmall
    networks:
      - hm-net
networks:
  hm-net:
    name: hmall

2.命令格式

http://www.dtcms.com/a/62283.html

相关文章:

  • word毕业论文“et al.”替换为“等”——宏
  • 爱迪斯通科技携手北京晨光溢海参展2025年北京教育装备展
  • MySQL:MySQL库和表的基本操作
  • Vue Amazing UI插件推荐
  • 【二分算法】-- x的平⽅根(easy)
  • @ComponentScan和@SpringBootApplication的scanBasePackages 同时使用
  • 面试模拟舱Pro:AI赋能的求职训练革命
  • DICOM Query/Retrieve(QR)详解与实现
  • 【Java】反射与动态代理篇
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_03可调整列宽的固定表头表格
  • 机器学习与深度学习算法及工具在图像分类中的应用总结
  • 移动Android和IOS自动化中常见问题
  • NPM安装与配置全流程详解(2025最新版)
  • Nginx的流式响应配置详解
  • 【每日学点HarmonyOS Next知识】状态变量、动画UI残留、Tab控件显示、ob前缀问题、文字背景拉伸
  • 【网络编程】HTTP网络编程
  • 前后端+数据库的项目实战--学生信息管理系统-易
  • Cesium 入门教程(基于 vue3)
  • Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))
  • 如何查看redis的缓存时间
  • js 使用 Web Workers 来实现一个精确的倒计时,即使ios手机锁屏或页面进入后台,倒计时也不会暂停。
  • 每天一篇《目标检测》文献(二)
  • Java线程详解
  • 【Linux】线程控制
  • 第四章:深入理解框架之 GUI 模块
  • ARM64异常处理技术
  • 我与红队:一场网络安全实战的较量与成长
  • Android DUKPT - 3DES
  • 文件上传漏洞(条件竞争)
  • Android12 应用更新开机动画