Docker详解及常用命令介绍

2023年 7月 31日 24.3k 0

🍓 简介:java系列技术分享(👉持续更新中...🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

一、Docker简介

Docker是一个开源的平台,可以帮助开发者快速构建、部署和管理软件应用程序它通过将应用程序打包为Docker镜像,使得应用程序可以在任何环境中运行,而无需考虑底层基础设施的差异。Docker提供了一系列工具,包括Dockerfile、docker-compose、docker images等,帮助开发者从零构建一个应用程序到发布上线的整个过程。

Docker是一个快速交付应用,运行应用的技术:

  • 可以将程序及其依赖,运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
  • Docker允许开发中将应用、依赖、函数库、一起打包,形成可移植镜像
  • 运行时利用沙箱机制形成隔离容,各个应用互不干扰
  • 启动,移出都可以通过一行命令完成,方便快捷
  • 二、Docker与虚拟机区别

  • docker 硬盘占用一般为MB,虚拟机一般为GB2
  • docker 是一个系统进程;虚拟机是在操作系统中的操作系统
  • docker 体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般
  • 三、Docker镜像与容器介绍

    镜像(image): Docker将应用程序及其所需的依赖,函数库,环境,配置,等文件打包在一起,称为镜像

    容器(Container) : 镜像中应用程序运行形成的进程就是容器,只是Docker会给容器做隔离,对外不可见
    在这里插入图片描述

    四、CentOS安装Docker

    4.1 如果之前安装过旧版本的Docker,可以使用下面命令卸载

    yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-selinux 
                      docker-engine-selinux 
                      docker-engine 
                      docker-ce
    

    4.2 安装yum工具

    yum install -y yum-utils 
               device-mapper-persistent-data 
               lvm2 --skip-broken
    

    4.3 更新本地镜像源

    yum-config-manager 
        --add-repo 
        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        
    sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
    
    yum makecache fast
    

    4.4 安装docker

    Centos7如下:

    yum install -y docker-ce
    

    注意Centos8如下:

    yum install docker-ce docker-ce-cli containerd.io -y
    

    4.5 启动、停止、重启、查看版本、设置开机自启

    systemctl start docker  # 启动docker服务
    
    systemctl enable docker     # 设置开机自启docker
    
    systemctl stop docker  # 停止docker服务
    
    systemctl restart docker  # 重启docker服务
    

    查看是否启动

     systemctl status docker  # 查看服务状态
    

    在这里插入图片描述

    查看版本

    docker -v
    

    五、Docker基本操作

    5.1 镜像操作

    • 镜像名称一般分为两部分组成:[repository]:[tag]
    • 在没有指定tag是,默认是latest,代表最新版本的镜像
     docker images        查看所有镜像
     docker pull     拉取自己需要的镜像,不指定则默认最新
     docker rmi      删除镜像
     docker save -o    保存镜像为tar
     docker load -i   重新加载
     docker push   --- 把本地镜像推送到远程仓库上
    

    在这里插入图片描述

    5.2 容器操作

     docker run  --naem containerName -80:80 -d nginx     -- 创建并运行一个容器,处于运行状态
     docker stop                                             停止一个运行的容器
     docker start                                            让一个停止的容器再次运行
     docker restart                                          重新启动一个或者多个容器
     docker exec -it containerName bash                    -- 进入到docker容器中
     docker logs    -f containerName                         -- 查看容器的运行日志
     docker rm                                              -- 容器的删除
     docker ps                                             -- 查看容器信息
    

    在这里插入图片描述

    5.3 数据卷操作

    5.3.1 容器与数据耦合带来的问题

  • 不便于修改
  • 数据不可复用:在容器内的修改对新创建的容器是不可复用的
  • 升级维护困难:数据在容器内,升级或更换容器必然会导致数据丢失
  • 5.3.2 数据卷介绍

    数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录.

    在这里插入图片描述

    5.3.3 数据卷操作命令

    **命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:**

    docker volume                          
                   create  创建一个volume
                   inspect  显示一个或多个volume的信息
                   ls  列出所有的volume
                   prune  删除未使用的volume
                   rm  删除一个或多个指定的volume
    

    六、自定义镜像Dockerfile

    镜像结构:

  • 基础镜像(Baselmage): 包含基本的系统函数库,环境变量.文件系统
  • 层(Layer) :在基础镜像基础上添加安装包,依赖,配置等,每次操作都形成新的一层
  • 入口(Entrypoint): 镜像运行入口,一般是程序启动的脚本和参数
  • Dockerfile

    • Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
    • Dockerfile的第一行必须是FROM,从一个基础镜像来构建
    • 基础镜像可以是基本操作系统,也可以是其他人制作好的镜像例如:java8-8-alpine

    在这里插入图片描述

    FROM java:8-alpine    
    COPY ./app.jar /tmp/app.jar
    EXPOSE 8090
    ENTRYPOINT java -jar /tmp/app.jar
    

    构建命令
    空格后面跟.,表示Dockerfile所在目录

    docker build-t javaDemo:1.0 .     
    

    七 、docker-Compose介绍

  • Docker-compose 可以基于Compose文件快速部署分布式应用,而无需手动一个个创建和运行容器

  • Docker-compose文件可以看做是将多个docker run 命令写到一个文件中,只是语法稍有差异

  • Docker-compose是一个文本文件,通过指令定义集群中的每个容器如何运行

  • Docker-compose中的服务之间可以通过服务名访问

  • 案例:

    version: "3.2"    
    
    services:
      nacos:
        image: nacos/nacos-server
        environment:
          MODE: standalone
        ports:
          - "8848:8848"
      mysql:
        image: mysql:5.7.25
        environment:
          MYSQL_ROOT_PASSWORD: 123456
        volumes:
          - "$PWD/mysql/data:/var/lib/mysql"
          - "$PWD/mysql/conf:/etc/mysql/conf.d/"
      userservice:
        build: ./user-service
      orderservice:
        build: ./order-service
      gateway:
        build: ./gateway
        ports:
          - "10000:10000"
    

    部署启动

    docker-compose up -d
    

    Compose 常用命令与配置

    docker-compose logs -f userservice  查看日志
    docker-compose  restart gateway userservice ......等等   重启
    

    在这里插入图片描述
    重点
    在这里插入图片描述在这里插入图片描述

    ds

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论