docker基础

Docker学习

初始Docker

开源应用容器引擎

启动 systemctl start docker

查看状态 systemctl status docker

镜像相关命令

  • 查看镜像
    • docker images[-q 查看镜像ID]
  • 搜索镜像
    • docker search
  • 下载镜像
    • docker pull
  • 删除
    • docker rmi

容器相关命令

  • 查看容器
    • docker ps 仅仅查看运行中的容器
    • -a 查看所有历史
  • 创建容器
    • docker run
    • -i 保持运行
    • -t 分配终端
    • -d 后台运行 需要执行进入命令 退出后不会关闭
    • –name= 起名字
  • 进入容器
    • docker exec -it可以进行交互 bash交互
  • 停止容器
    • docker stop
  • 启动容器
    • docker start
  • 删除容器
    • docker rm
  • 查看容器信息
    • docker inspect

容器数据卷

容器内部只模拟该程序运行所必要的系统 所以vim编辑器并不存在 所以无法直接修改容器内部的文件需要使用数据卷挂载间接修改文件内容

如果容器已经创建 无法挂载数据卷

如果数据卷不存在则自动创建该数据卷

数据卷是宿主机的一个目录或文件

  • 容器数据持久化
  • 外部机器和容器的间接通信
  • 容器间数据交换

配置数据卷

  • Docker run …. -v 宿主机目录:容器内目录
  • 注意
    • 目录必须是绝对路径
    • 目录不存在会自动创建
    • 可以挂载多个数据卷

多容器进行数据交换

  1. 多容器挂载同一个数据卷
  2. 数据卷容器

配置数据卷容器

  1. 创建c3数据卷容器 使用-v参数 设置数据卷
    • docker run -it –name=c3 -v /volume centos:7
  2. 创建启动c1 c2容器 使用–volumes-from参数 设置数据卷
    • docker run -it –name=c1 –volumes-from c3 centos:7
    • docker run -it –name=c2 –volumes-from c3 centos:7

Docker应用部署

MySQL
  1. 搜索MySQL镜像
  2. 拉取镜像
  3. 创建容器
  4. 操作容器中的MySQL

image-20240131134116891

Dockerfile

不同linux发行版 bootfs基本相同 rootfs不同

docker镜像是由特殊文件系统叠加而成

image-20240131154252124

镜像制作
  • 容器转镜像
    • docker commit 容器ID 镜像名称:版本号
      • 目录挂载无法被commit
    • 镜像转压缩文件
      • docker save -o 压缩文件名称 镜像名称:版本号
    • 压缩文件转镜像
      • docker load -i 压缩文件名称
  • dockerfile
    • 是一个文本文件
    • 包含一条条指令
      • FROM 指定父镜像
      • MAINTAINER 作者信息
      • LABEL 标签
      • RUN 执行命令
      • CMD 容器启动命令

image-20240527165508879

rmi 删除镜像 rm删除容器

遇到不会的指令直接 –help

自定义镜像

  • 准备系统运行环境
  • 准备jre配置环境变量
  • 拷贝jar包
  • 编写运行脚本

添加安装包依赖配置都形成新的每一层

使用dockerfile来描述

image-20240527174310654

image-20240527174615644

简化 直接在jdk镜像上配置image-20240527174722324

image-20240527180951989

注意 .

image-20240527181811615

通过自定义网络可以通过容器名直接进行网络连接 无需指定ip地址

dockercompose

通过单独的模板文件来定义一组性关联的应用容器 帮助我们实现多个相关联的docker容器的快速部署

image-20240527185523676