镜像
什么叫镜像?
Docker镜像是一个特殊的文件系统(分层的联合文件系统),除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等信息)。
什么叫分层的文件系统呢?
例如我们去dockerhub上搜索centos,我这里安装的是centos8的版本,所以去看看8下面都有啥吧;

标红的地方点进去,我们看下它的dockerfile(dockerfile是指构建docker镜像的指令脚本)

可以看到centos8的dockerfile很简单,from是说明它基于什么构建的,可以看到centos8是基于scratch这个空镜像来构建的;add 添加一个centos的压缩包;LABEL是标签说明,CMD是运行完此镜像后默认执行的指令,可以看到启动centos8镜像后,它指定进入了bash脚本界面;
官方说明:scratch镜像是一个空的镜像,可以用于构建busybox等超小镜像,可以说是真正的从零开始构建属于自己的镜像
注📢:macos系统其实也采用了分层的文件系统,去dockerhub搜Ubantu也可以看到它对应的镜像;或者你在升级你的mac系统时,如果点开详情,或者看它的更新包,可以看到它的更新包中包含了基于上次安装的数据卷(volumes);
docker镜像常用相关命令:
docker image ls # 列出当前宿主机上所有镜像
docker image ls ubuntu:16.04 # 列出指定的镜像
docker pull hello-world #拉取镜像
docker run hello-world #运行镜像
docker rmi hello-world #删除镜像
docker run -i -t --rm ubuntu:16.04 /bin/bash
#-i:允许你对容器内的标准输入进行交互
#-t:在新容器内指定一个伪终端或终端
#–rm:容器退出后立即删除容器。一般情况下,无需指定此参数。一般我测试用的话可以加上,容器停止后立即删除容器
# ubuntu:16.04:以此镜像为基础启动容器
# /bin/bash:指定的交互式Shell
docker inspect 578c3e61a98c #查看指定镜像id 镜像的详情
docker image rm 578c3e61a98c # docker删除指定镜像Id镜像
docker image rm $(docker image ls -q) #删除所有镜像
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms64m -Xmx512m" elasticsearch:7.7.1 # 后台运行名称为elasticsearch的镜像,并指定端口映射;将9300映射到9200的宿主机端口上,-e指定单机运行模式,-e指定运行的java环境配置 容器名称为elasticsearch:7.7.1
容器
docker的镜像启动后就是一个容器了,之前我们安装docker时,运行了HelloWorld的测试程序镜像,那么它启动后就是一个容器实例(就是我们运行的服务);
[
{
# 发现镜像Id580c0e4e98b06d 是容器id的前缀
"Id": "sha256:580c0e4e98b06d258754cf28c55f21a6fa0dc386e6fe0bf67e453c3642de9b8b",
# 用的是最新的版本
"RepoTags": [


最低0.47元/天 解锁文章
780

被折叠的 条评论
为什么被折叠?



