• Docker基础与常用命令


    一、概念

    Docker是什么:

    • linux容器的封装

    解决微服务的部署问题:

    • 微服务的拆分会给部署带来了很大的麻烦。
      • 组件部署冲突,兼容性。

      • 多台服务重复部署环境不一致

    如何解决:

    • 依赖兼容性
      • 打包函数库,依赖,配置
      • 每个应用沙箱隔离,独立运行
    • 环境差异
      • 系统程序和所要调用的系统函数库一起打包(完整运行环境),仅依赖Linux内核
      • 直接调用Linux内核来运行
    • 启动和运行都使用命令来完成

    和虚拟机的区别:

    • 虚拟机:
      • 模拟硬件
      • 运行操作系统
      • 体积大,?G
      • 性能较差,启动慢
    • Docker
      • 软件虚拟,封装函数库
      • 没有模拟操作系统
      • 体积小,MB
      • 秒级启动

    Docker架构

    • 镜像
      • 将应用程序及其所需要的依赖、函数库、环境、配置等文件打包在一起
    • 容器
      • 镜像运行起来形成的进程,Docker会给容器做隔离
    • DockerHub

      • CS 架构
        • 服务端:守护进行,处理指令,管理镜像、容器等
        • 客户端:通过命令向服务端发送指令。
      • Docker Registry
        • 镜像托管平台,
        • 私有,公有(阿里等)

    二、基本操作

    镜像操作

    拉取、查看镜像:

    • 命令:docker pull nginx,DockerHub拉取nginx镜像,
    • 命令:docker images,查看拉取到的镜像

    保存镜像:

    • 命令:docker xx --help,查看docker save和docker load的语法
    • 命令:docker save -o [保存的目标文件名称] [镜像名称]
    • 命令:docker save -o nginx.tar nginx:latest,docker save导出镜像到磁盘

    导入镜像:

    • 命令:docker rmi nginx:latest,删除本地的nginx镜像
    • 命令:docker load -i nginx.tar,加载本地文件

    拉取步骤:

    1. 去DockerHub搜索Redis镜像
    2. 查看Redis镜像的名称和版本
    3. 利用docker pull命令拉取镜像
    4. 利用docker save命令将 redis:latest打包为一个redis.tar包
    5. 利用docker rmi 删除本地的redis:latest
    6. 利用docker load 重新加载 redis.tar文件

    容器操作

    常用命令:

    • docker run:创建并运行一个容器,处于运行状态
    • docker pause:让一个运行的容器暂停
    • docker unpause:让一个容器从暂停状态恢复运行
    • docker stop:停止一个运行的容器
    • docker start:让一个停止的容器再次运行
    • docker rm:删除一个容器

    创建并运行

    • 命令:docker run --name name -p 80:80 -d nginx

    命令解读:

    • docker run :创建并运行一个容器
    • --name : 指定容器名称
    • -p :指定端口映射
    • -d:后台运行容器
    • nginx:镜像名称,例如nginx

    进入容器,修改文件

    • 命令:docker exec -it mn bash

    命令解读:

    • docker exec :进入容器内部,执行一个命令
    • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
    • mn :要进入的容器的名称
    • bash:进入容器后执行的命令,bash是一个linux终端交互命令

    进入目录:

    • cd /usr/share/nginx/html

    修改index.html的内容:

    sed -i -e 's#Welcome to nginx#Hello nginx#g' -e 's###g' index.html

    docker run命令的常见参数有哪些?
    - --name:指定容器名称
    - -p:指定端口映射
    - -d:让容器后台运行
    
    查看容器日志的命令:
    - docker logs
    - 添加 -f 参数可以持续查看日志
    
    查看容器状态:
    - docker ps
    - docker ps -a 查看所有容器,包括已经停止的

    数据卷(容器数据管理)

    数据卷(volume):

    • 一个虚拟目录,指向宿主机文件系统中的某个目录。
    • 操作虚拟目录等同于操作主机目录

    数据卷操作:

    基本语法:

    docker volume [COMMAND],数据卷操作

    command来确定下一步的操作:

    • create 创建一个volume
    • inspect 显示一个或多个volume的信息,查看挂载目录
    • ls 列出所有的volume
    • prune 删除未使用的volume
    • rm 删除一个或多个指定的volume

    常用命令

    • docker volume create:创建数据卷
    • docker volume ls:查看所有数据卷
    • docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置
    • docker volume rm:删除指定数据卷
    • docker volume prune:删除所有未使用的数据卷

    挂载数据卷

    • docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx

    手动挂载:

    如果宿主机目录不存在docker会自动创建

    mysql的数据挂载

    docker run \

    --name mysql \

    -e MYSQL_ROOT_PASSWORD=root \

    -p 3306:3306 \

    -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \

    -v /tmp/mysql/data:/var/lib/mysql \

    -d \

    mysql:5.7.25

    三、DockerFile自定义镜像

    结构

    镜像

    • 镜像就是将应用程序、系统函数库、环境、配置、依赖打包而成。
    • 镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。
    • 构建镜像,其实就是实现上述打包的过程。

    分层结构-Layer

    实现复用

    • Baselmage层:包含基本的系统函数库、环境变量、文件系统
    • Entrypoint:入口,是镜像中应用启动的命令
    • 其它:在Baselmage基础上添加依赖、安装程序、配置等

    常见指令

    运行

    镜像构建后应该先运行

    • docker run --name web -p 8090:8090 -d javaweb:1.0

  • 相关阅读:
    Jdk8到jdk11 踩坑指南
    温泉镇旅游微信小程序的设计与实现(论文+源码)_kaic
    leetcode 70.爬楼梯、322.零钱兑换、279.完全平方数
    【Python基础】史上最全||一篇博客搞懂Python面向对象编程(封装、继承、多态)
    Python实现随机森林RF并对比自变量的重要性
    封装tcp和udp网络通信
    Matlab:Matlab编程语言学习之向量化编程的简介、技巧总结案例应用之详细攻略
    JavaScript中的包装类型详解
    Nginx 学习
    NAT技术与代理服务器
  • 原文地址:https://blog.csdn.net/m0_62091368/article/details/127424194