1.1 镜像名称的格式
- 镜名称一般分两部分组成:[repository]:[tag]。
- 在没有指定tag时,默认是latest,代表最新版本的镜像。
例如:
就是,仓库名称。
就是,可以理解为标记、标签,或者版本号。
就是完整的镜像名称。
1.2 Docker命令使用技巧
中的命令很多,全部记忆是非常困难的。
今后如果某个命令想不起来怎么用。
可以在当前命令终端查看命令文档。
- 查看全部命令
- 详细查看某个命令的用法,比如images的用法
1.3 镜像相关命令详解
命令格式:
- :具体命令
- :命令选项(中括号代表可选参数)
- :代表要传递给命令的具体参数
1.3.1 构建镜像
想要构建镜像的话,当前目录下必须有一个Dockerfile文件
1.3.2 拉取镜像
1.3.3 将镜像推送到某个镜像服务器
1.3.4 查看镜像
镜像信息展示时5个列的意思:
-
:表示镜像的仓库源
-
:镜像的标签版本号
-
:镜像ID
-
:镜像创建时间
-
:镜像大小
1.3.5 删除镜像
补充:
1.3.6 将镜像保存为一个本地压缩包
1.3.7 将本地镜像压缩包加载到正在运行Docker中成为镜像
1.3.8 镜像搜索命令
1.3.9 查看镜像/容器/数据卷所占的空间
以上这么多命令的参数,是很难记忆的,也不需要记忆
我也是一个个用–help直接查看帮助文档去提取的。所以重要的不是记忆,而是学会怎么看文档。
1.3.10 虚悬镜像
仓库名、标签都是的镜像,俗称虚悬镜像。
这种镜像没有什么用,可以直接删除。
镜像相关命令操作关系图:
1.4 镜像相关概念
1.4.1 是什么
是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容。
把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),
这个打包好的运行环境就是镜像文件。
只有通过这个镜像文件才能生成容器实例(类似中出来一个对象)。
1.4.2 镜像的分层结构
以一个镜像为例,在下载的过程中可以看到的镜像好像是在一层一层的在下载。
镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。
比如说有多个镜像都从相同的镜像构建而来,那么只需在磁盘上保存一份 镜像;
同时内存中也只需加载一份 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。
1.4.3 容器和镜像的层级关系
当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,容器层之下的都叫镜像层。
所有对容器的改动,无论添加、删除、还是修改文件都只会发生在容器层中。
只有容器层是可写的,容器层下面的所有镜像层都是只读的。
1.5 镜像文档的使用
比如我们需要拉取一个镜像。
我们可以打开去搜索想要操作的镜像。
点击的官方镜像查看详细信息。
右上角的小黑框里给出了如何拉取这个镜像的命令。
但是它并没有指定版本,因此就是拉取最新版本的意思。
最新版本镜像tag标识一般都为:。
镜像中的应用运行后形成的进程就是容器,Docker会给容器进程做隔离,对外不可见。
2.1 容器的三个状态
-
运行:进程正常运行
-
暂停:进程暂停,不再运行,并不释放内存
-
停止:进程终止,回收进程占用的内存、等资源
2.2 容器相关命令详解
2.2.1 创建并运行一个容器,处于运行状态
很重要的要说明的一点:容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是一直挂起的命令(比如运行),就是会自动退出的。
最佳的解决方案是,将你要运行的程序以前台进程的形式运行。
常见就是命令行模式,表示我还有交互操作,别中断。
所以这里运行一个容器示例就衍生出来两种方式:
这个命令使用起来是很复杂的,文档内容非常长。
最好就是想要运行什么容器,就直接去DockerHub上查看帮助文档。
查看运行镜像的帮助文档的方法:
以为例。
找到官方镜像以后。有和两栏。
在下往下拉,就能看到一个小标题
这里就有运行相关的官方指引,英文不好的可以把网页翻译下再看也能看懂。
2.2.2 查看所有正在运行的容器以及它们的状态
2.2.3 查看某个容器的运行日志
2.2.4 删除一个不在运行的容器
补充:
2.2.5 启动已被停止的容器
2.2.6 停止运行中的容器
2.2.7 重启容器
2.2.8 暂停容器中所有的进程
2.2.9 恢复容器中所有的进程
2.2.10 查看容器内运行的进程
2.2.10 查看容器内部细节
容器相关命令图:
2.3 如何进入正在运行的容器,操作容器内部
2.3.1 exec命令
这是一条很重要的命令。
执行它以后就可以进入这个容器,并显示当前容器的命令行终端。
在属于这个容器的命令行终端上,执行的命令都会作用于容器的内部系统。
命令详解:
- :进入容器内部,执行一个命令
- : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
- :要进入的容器的名称
- :进入容器后执行的命令,是一个linux终端交互命令。
- 在这里就相当于啥都不做,仅仅只是为了满足命令的格式需要
进入容器后,使用命令:
发现容器内部也有一个文件系统。但是并不是完整的文件系统,它只包含需要的部分。
我们并不知道要修改的被安装在这个文件系统的那个位置。
如果想要部署前端静态资源,需要查找官方文档。
在的官方文档中的(托管一些简单的静态内容)部分。
提到了静态目录就在。
其它需要的信息也可以按照这个方式去查找。
进入文档提供的目录:
发现这个目录下只有和这两个文件。
这个目录和不使用时,的目录的内容完全一致。
如何修改文件?
在容器的系统内,根本没有工具,连命令都是无法使用的。
因为这些和无关的东西,是不会存在与容器内部系统中的。
这里提供一种方式:
这种繁琐的方式,了解即可。
通常都是不推荐直接进入容器内部去操作文件的。
- 一来没有文件操作的相关命令可以使用。
- 二来在容器内部修改了什么都是没有记录的,也许最近操作者会记得,随着时间推移,将越来越不可维护。
2.3.2 attach 命令
虽然它也可以进入容器内部,并开启一个命令行终端。但是一旦退出,容器也会立刻就停止。
2.3.3 exec和attach的区别
-
是在容器中打开新的终端,并且可以启动新的进程用退出,不会导致容器的停止。
-
直接进入容器启动命令的终端,不会启动新的进程 用退出,会导致容器的停止。
一般 只会在面试时问到,工作中有需要一般就直接使用系列的命令即可
2.4 容器运行时就进入容器内部
上面是容器已经运行之后还想进入容器内部的方式,如果容器第一次启动时就想进入就可以输入如下命令:
相当于以交互模式启动一个容器,在容器内执行/bin/bash命令。
2.5 从容器内部退出
直接在容器内部的命令行终端系统上输入命令,即可退出容器,回到操作系统
但是如果是命令时就进入容器内部的话:
2.6 导入和导出(容器备份)
-
导出容器的内容留作为一个归档文件。
-
从包中的内容创建一个新的文件系统再导入为镜像。
示例
这可以达到容器的完全备份需求。
2.7 把容器commit为一个镜像
命令可以提交容器副本使之成为一个新的镜像。
语法如下:
它可以用来做镜像增强。镜像基本就是最简的系统,如果想在一个镜像中加入,可以这么做:
官网是默认下载的没有命令
现在自己构建的镜像,新增加了功能,今后使用这个镜像运行的容器就都有命令了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/73867.html