• 【Docker】微服务学习笔记五:Docker常用命令解析


    个人简介:

    📦个人主页:赵四司机
    🏆学习方向:JAVA后端开发
    📣种一棵树最好的时间是十年前,其次是现在!
    ⏰往期文章:SpringBoot项目整合微信支付
    🧡喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。

    前言:

    1.前面基于Springboot的单体项目介绍已经完结了,至于项目中的其他功能实现我这里就不打算介绍了,因为涉及的知识点不难,而且都是简单的CRUD操作,假如有兴趣的话可以私信我我再看看要不要写几篇文章做个介绍。

    2.完成上一阶段的学习,我就投入到了微服务的学习当中,所用教程为B站上面黑马的微服务教程。由于我的记性不是很好,所以对于新事物的学习我比较喜欢做笔记以加强理解,在这里我会将笔记的重点内容做个总结发布到“微服务学习”笔记栏目中。我是赵四,一名有追求的程序员,希望大家能多多支持,能给我点个关注就更好了。

    一:引入

      在介绍Docker镜像相关命令之前我们先认识一下镜像的名称组成,镜像名称组成一般分为两部分:[repository]:[tag],前面代表镜像名称,后面代表镜像版本,比如MySqk:5.7,在没有指定tag时候,默认是lastest,代表最新版本。

    Docker镜像常用命令有以下6个(参考下图):

    • docker images
    • docker rmi
    • docker pull
    • docker push
    • docker save
    • docker load

    这6个命令的功能见下图
    在这里插入图片描述

    Docker容器相关命令主要有以下9个:

    • docker run
    • docker pause
    • docker unpause
    • docker stop
    • docker start
    • docker exec
    • docker logs
    • docker ps
    • docker rm

    这9个命令的功能见下图
    在这里插入图片描述

    二:Docker镜像常用命令演示

    1.镜像拉取

      通常我们都会去DockerHub官网进行镜像的拉取,进入官网之后,比如说我要拉取nginx的镜像,我就可以在上方搜索nginx
    在这里插入图片描述

    选择官方镜像
    在这里插入图片描述

      点击进去之后在右边会出现一个命令docker pull nginx,执行这个命令拉去的是最新版,当然我们也可以自定义版本,也就是执行docker pull nginx:xx,下面我演示的是拉取最新版本:
    在这里插入图片描述

    查看系统中的镜像(docker images)
    在这里插入图片描述
    可以看到拉取到的是最新版本

    2.保存&加载镜像

      我们可以从本地镜像仓库中将镜像保存下来打包发送,这里说明一下,假如你不知道某个命令如何使用,那么你就可以查看帮助文档,命令为docker xx --help,这里演示如何通过帮助文档查看docker save的介绍:
    在这里插入图片描述

    可以看到save命令的格式为docker save [OPTIONS] IMAGE [IMAGE…],下面执行这个命令
    在这里插入图片描述
    可以看到成功将nginx镜像下载到本地

    那么如何将本地镜像加载到镜像仓库呢?首先我先将原来的镜像卸载(docker rmi image:tag)
    在这里插入图片描述
    可以看到成功将本地镜像仓库中的nginx镜像卸载了,接下来进行镜像加载
    在这里插入图片描述

    可以看到镜像成功加载

    三:Docker容器常用命令

    1.启动容器

    docker run --name containerName -p 80:80 -d nginx

    命令解读:

    • docker run:创建并运行一个容器
    • –name:给容器起一个名字,比如叫做ng
    • -p:将宿主机端口与容器端口进行映射,冒号左边是宿主机端口,冒号右边是容器端口
    • -d:后台运行容器
    • nginx:镜像名称

    补充:

      为什么需要端口映射呢?因为假如你直接去访问容器时访问不了的,因为前面说过容器是被隔绝起来的,要想访问就必须通过端口进行映射,所谓端口映射通俗来说就是当我们想要访问容器的80端口时候你就可以通过访问宿主机的80端口然后宿主机再将该请求映射到容器的80端口达到让用户可以访问。

    -d的意思就是当我们关闭窗口后容器的服务程序仍还在运行中的,相当于在后台运行。

    执行docker run
    在这里插入图片描述

    返回的是容器的唯一id

    2.查看容器状态及日志

    在这里插入图片描述

    可以看到有一个容器正在运行,下面尝试访问nginx
    在这里插入图片描述
    可以看到成功访问到nginx
    输入命令docker logs -f ng
    在这里插入图片描述
    可以看到输出一堆日志信息,假如你要持续输出日志,你可以执行这个命令docker logs -f ng,当然后面那个参数是你的容器名字。

    3.进入容器修改文件

      通过Docker的exec命令可以进入到容器里面对容器的文件进行修改,以我上面创建的ngnix为例,可执行docker exec -it ng bash进入该容器内部,命令解读:

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

      但是不建议通过这样去修改容器文件,因为这样做首先很麻烦,因为容器中只包含必要的函数库和文件,因此进入容器后不能通过vi或者vim命令对文件进行修改;而且通过这样的方式对容器文件进行修改是没有记录的。

    4.数据卷操作

      前面提到不建议通过进入容器内部的形式对文件进行修改,那么是否还有更佳的方案呢?答案是肯定的,即通过数据卷来完成这一功能,数据卷可以理解为数据的双向绑定,即将你宿主机的文件和容器中的文件绑定起来,其中一个发生改变另一个都会跟着发生改变。数据卷能够将容器与数据分离,解耦合,方便操作容器内部数据,保证数据安全。

    (1)基本语法

    数据卷的基本语法如下:

    docker volume [COMMAND],常用command命令有:

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

    (2)挂载操作

    我们在创建容器时候,可以通过-v参数来挂载一个数据卷到某个容器目录,举例如下:

    docker run \ //创建容器并运行容器

    –name ng \ //给容器起名为ng

    -v html:/root/html \ //将html数据卷挂载到容器内部/root/html这个目录中

    -p 8080:8080 \ //将宿主机的8080端口映射到容器内的8080端口

    nginx //镜像名称

    需要注意的是,假如我们没有提前创建好数据卷,那么执行docker run -v时候docker会自动帮我们创建。

  • 相关阅读:
    程序员开启商业思维到底有多赚钱?羊了个羊告诉你答案!
    [java]深度剖析面向对象编程
    Python写API
    从零到壹搭建一个商城架构--Redis集群
    [附源码]计算机毕业设计美发店会员管理系统Springboot程序
    npcap开发指南
    Web进阶
    iOS 16 中 SwiftUI 4.0 轻松实现导航栏标题可编辑
    linux网络编程之tcp
    【PHP】如何搭建PHP本地运行学习环境2022版
  • 原文地址:https://blog.csdn.net/weixin_45750572/article/details/125808908