docker停止镜像命令 docker镜像关机就没了
docker仓库的镜像怎么删除
docker仓库的镜像的删除方法
docker停止镜像命令 docker镜像关机就没了
docker停止镜像命令 docker镜像关机就没了
docker停止镜像命令 docker镜像关机就没了
docker越来越炙手可热,如果你的团队已经准备开始使用docker,那么私有仓库是必不可少的东西,首先是可以帮助你加快从pull镜像的速度,其次也可以帮助你存放私有的镜像,本文主要为大家介绍如何从公用上讲开放的images备份到本地私有上。
sudo s个人电脑处于 私网 中; IP地址处于 IPV4 和 IPV6 ;u
2.停止所有的conta容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的一个的进程,不占用其他任何可执行文件的内存,非常轻量、高效、快速。iner,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)
3.查看当前有些什么images
docker images
doc方法一:直接。如docker cp 容器id:/etc/promeus /zhao #将容器内部的文件到宿主机的/zhao文件夹下ker rmi
想要删除untagged images,也就是那些id为
docker rmi $(docker images | grep "^
要删除全部image的话
docker rmi $(docker images -q)
Nginx反向docker容器进行域名解析绑定的实现方法
改变TCPIP连接方式可以把多个域名映射到docker-stack一键编排lnmp - 知乎 (zhihu)同一个IP地址上
docker 镜像名称由REPOSITORY和TAG组成 [REPOSITORY[:TAG]] ,TAG默认为latest
在宿主机创建持久化 conf--配置目录 html--静态网站目录 logs--日志目录 cert--存放证书目录
将容器内的 nginx.conf 与 default.conf 文件分别拷贝到主机/mnt/nginx与目录/mnt/nginx/conf下,分别执行
conf目录下创建nginx.conf文件
首先要在域名管理中做好域名简析
在conf.d目录下创建 域名为ab.baidu的配置文件 ab.baidu.conf 文件 包含ssl证书
在conf.d目录下创建 域名为gh.baidu的配置文件 gh.baidu.conf 文件 包含ssl证书
ginx.conf并没有在etc/nginx/conf目录下。
允许s访问 的 default.conf 文件
将的配置文件挂载到容器中,这样我们修改配置文件会方便一些。
退出nginx容器,将容器中的文件nginx.conf先拷贝到宿主机中,conf.d目录下的 default.conf 文件拷贝出来
执行 docker stop ef 命令停止刚刚创建的nginx容器,ef是容器Id,然后执行 docker rm ef 移除容器,
-v /docker-root/nginx/conf/nginx.conf :/etc/nginx/nginx.conf
/docker-root/nginx/conf/nginx.conf 宿主机中的ngix配置文件 挂载 到容器的 /etc/nginx/nginx.conf 配置文件
-v /docker-root/nginx/conf/conf.d:/etc/nginx/conf.d
/docker-root/nginx/conf/conf.d 宿主机中的 配置目录 conf.d 挂载到 容器的 /etc/nginx/conf.d 目录上
-v /docker-root/nginx/cert:/cert/
映射ssl 证书文件
命令,重新创建nginx容器
这样就可以将配置文件、log、静态页面映射到宿主机中。需要修改或者查看直接在宿主机中修改或者查看就可以了。需要注意的是, 配置文件虽然映射到宿主机中,但是如需配置路径,还需配置成容器中的路径 。
注意发布到 云上 安全组是否开放了443端口。
把 vue 生成的 dist目录下的文件 上传到
/root/docker-root/vue-mcyl-src
文件目录 dist 目录 Dockerfile 文件
使用下面的命令 生成镜像
启动容器
conf.d 目录下的配置文件 default.conf
防火墙原因,需要将通信的端口开放
解docker run -d mcyl-vue:v1.0决办法:
firewall-cmd --zone=public --add-port=9080/tcp --permanent
firewall-cmd --zone=public --add-port=8080-8080/tcp
参考
docker come 内容指导
4.删除images,通过image的id来指定删除谁由于之前写了一篇文章,主要是关于docker 基础的东西。这里说一下,容器编排的事情,因为后面 k8s 会用到这个。
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。参考 下面这个, 文档特别清晰
该Dockerfile文件位于 ~/course/docker/Dockerfile/ubuntu_gcc,使用命令 cd 切换到该目录, 通过命令 cat 查看 Dockerfile 内容。Docker Come gitbook
注意 docker come 有两个版本 一个是 python 编写的 ( docker-come ),一个是 go 重写的 叫 come v2 ( docker come )命令几乎没有区别,只是 go 的少了 - , 我们用python 版的就行。没什么别
目标 : 定义和运行多个 Docker 容器的应用, 针对多个容器组,进行一键启动和停止。
具体实现 : docker-come.yml 来定义一组相关联的应用容器为一个项目(project) docker-come.yml 就相当于 dockerfile 的 dockfile
概念
serv 服务 , 包含多个运行的容器
project 项目, docker come 管理的单元
自己跑了一便文档上的例子,确实比较好用哟
内容分别如下:
app.py
Dockerfile
docker-come.yml
运行过程
看一下刚刚启动的容器:
上述命令会自动 帮你构建镜像,并按照配置启动容器组。已经存在镜像,则不会成重新构建,除非 使用 docker-come build 重新构建服务
停止过程
可以看出,是先停掉容器,然后再删除容器的,也会删除网络。所以必要的数据一定要 挂载到外面做持久化
可以看到不会重复构建镜像,只会创建新的网络和容器
可选的 参数
-f, --file FILE 指定使用的 Come 模板文件,默认为 docker-come.yml
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名
(up 的时候可以,使用 -p 参数修改 默认的 目录名的项目名)
检查 Come 文件是不是对的,错误的话会有错误信息
停止容器组,依次删除容器和清楚创建的网络
进入指定的容器 ( servs 里定义的服务名) 或者直接 docker exec
查看容器组 (只包含 come 启动的容器)
列出 come 文件中的镜像
默认会 用不同的颜色 显示 服务组的控制台日志
暂停一个服务容器,和 docker pause 一样的
拉取服务依赖的镜像
推送服务依赖的镜像到 Docker 镜像仓库
重启项目中的服务
所有关联的服务将会自动被启动
这个还是挺有用的,设置服务容器的个数
启动服务
关闭容器
这个命令是最常用的
ymal
一个基本模板
一些可用的配置项 (只说一下,常用的吧)
每个服务都必须通过 image 或者 build ( 使用 Dockerfile) 指令 指定镜像生成的方式
指定dockerfile 路径,相对于 docker-come.ymal 文件 相对路径 或者 路径
默认为 dockerfile 的入口命令,你可以用这个覆盖
覆盖默认的规则 : 项目名称 服务名称 序号
指定当前容器 依赖那个容器(需要先启动)
下面的启动 顺序依次是 redis db web
暴露端口,但不映射到宿主机
容器健康检查配置
和build 目的一样,指定某个镜像的生成方式
如果本地不存在 会尝试 pull
添加容器描述信息, 和 dockerfile 里面的 labels 一样
和 docker run --network 的一样
设置容器使用的网络
和 docker run -p 一样
HOST:CONTAINER 前面是 宿主机,后面是容器,单个 的话就是暴露容器端口
设置挂在目录
HOST:CONTAINER 宿主机路径/数据卷 : 容器路径
支持相对路径
以及其他命令
关于 come 容器间的通信 (使用 服务名 即可)
下面关于我的 docker-come.yml
DOCKER 总结
重启d(serv d restart)和radosDocker 是一个开源的 应用容器引擎 ,让 开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化 。容器是完全使用沙箱机制,相互之间不会有任何接口。
由于本地开发好的程序往往都需要部署到上进行运行,这就导致了程序需要运行在不同的环境上,这通常是一个令人头痛的事情。在过去,开发团队需要清楚的告诉运维部署团队,其所使用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。
于是乎, 虚拟化 技术应运而生。开发团队将开发好的程序在虚拟机上运行,这样就能解决运维的问题。但是由于虚拟机技术过重的特性导致了其 资源占用多、冗余步骤多以及启动慢的缺陷 。而这个时候 一种新的虚拟化技术搭配上容器化的思想 的产品便出现了,而它就是Docker。
下图是虚拟机技术和容器化技术架构的对比。我们可以得出以下总结:
]( )
于是乎相比于虚拟机技术,容器化技术具有以下 优势:
相关网站
如下图所示,Docker使用客户端-(C/S)架构模式,使用远程API来管理和创建Docker容器。端分为Docker daemon, Image和Container三个部分。此外还有Docker Registry。
小结
需要正确的理解仓储/镜像/容器这几个概念 :
在外面使用容器的时候,我们不希望容器中的数据在容器被删除后也一并删除了,这时候我们docker commit命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像。就可以 通过使用容器数据卷,将数据储存在本地并用Docker将其挂载到容器中,这样我们即使删除了容器,数据也依旧存在中,也就实现了数据持久化。
容器数据卷挂载命令(-v)
Dockerfile 挂载容器数据卷
我们除了可以从仓库中拉取镜像以外,我们也可以 自己创建镜像 ,这就要用到Docerfile。
dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 。
基础知识:
流程:
说明:
在实际场景中,我们会遇到 多个Container之间通讯 的问题。而Docker网络就是用于解决此问题的技术。docker会给每个容器都分配一个ip,且容器和容器之间是可以互相访问的。
Docker网络原理
每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。这是个桥接网卡,使用了 v-pair 技术 。Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据 Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网 关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。
Docker容器网络就很好的利用了Linux虚拟网络技术,在本地主机和容器内分别创建一个虚拟接口,并 让他们彼此联通(这样一对接口叫v pair);
Docker中的网络接口默认都是虚拟的接口。虚拟接口的优势就是转发效率极高(因为Linux是在内核中 进行数据的来实现虚拟接口之间的数据转发,无需通过外部的网络设备交换),对于本地系统和容 器系统来说,虚拟接口跟一个正常的以太网卡相比并没有区别,只是他的速度快很多。
[上传中...(image-41d42a-1642627027452-2)]
Docker Come是一个用于定义并运行多容器应用的工具 。
Docker Come的 步骤如下 :
NOTE: Come :重要的概念。
docker-come.yml编写
Note: docker-come会自动为多容器之间创1.进入root权限建网络,保证通讯。
Docker Swarm 是Docker 的集群管理工具。 它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
Docker 是一个开源的 应用容器引擎 ,它的出现大大简化了运维的难度,提高了运维效率。过去我们需要在上安装程序所需要的所有依赖,而如今我们只需要编写好docker-come和Dockefile的脚本,就可以使程序一键跑通。在企业级的应用中,我们必然会惊颤使用到Docker和容器化技术。
狂神说
深入理解docker的镜像和容器
除了上面几种做法之外,docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用:镜像(Image)就是一推只读层Image(read-only layer)的统一视觉,也许这些定义有些难理解,下面这张图能够帮助读者理解镜像的定义
Docker的运行原理如下:客户端可以将docker命令发送到端的Docker daemon上,再由Docker damon根据指令创建、选择或者从Docker仓库中拉取(pull)镜像。接着客户端可以通过镜像创建容器。当我们需要使用程序时,运行相应的容器即可。从左边往右我们看到了多个只读层,他们重叠在一起,除了最下面一层,其他层都会有一个指针指向下一层,这些层是docker内部的实现细节,并且能够在主机(运行docker的机器)的文件中访问到,统一文件系统技术(union file )能够将不同层合成一个文件系统,为这些层提供一个统一的视觉,这样就隐藏了多层的存在,在用户的角度来看,只存在一个文件系统。我们可以在右边看到这个视角的形式。
你可以在你的主机文件系统上找到有关这些层的文件,在一个运行中的容器内部,这些层是不可见的。在我的主机上,我发现他们存在于/var/lib/docker/image目录下
容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视觉,区别在于容器的最上面那一层是可读可写的
要点: 容器 = 镜像 + 读写层
Running Container Definition
一个运行态容器(runing container)被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。下面这张图展示一个运行中的容器
我们可以通过以下命令验证我们所说
find / -name happiness.txt
为了将零星的数据整合起来,我们提出了镜像层(image layer)这个概念,下面这张图描述了一个镜像层,通过,我们能够发现一个层并不仅仅包含文件的改变,他还包含其他重要的信息
元数据(metadata)就是关于这个层的额外信息,它不仅仅能够让Docker获取运行和构建时的信息,还包括父层的层次信息,需要注意的是,只读层和读写层都包含元数据。
/var/lib/docker/image/overlay2:存储镜像管理数据的目录
一个容器的元数据好像被分成了很多文件,但或多或少能够在/var/lib/docker/containers/
现在,让我们结合上面提到的实现细节来理解Docker命令
docker create 命令就是为指定的镜像(image)添加一个可读写层,构成一个新的容器,注意这个容器并没有运行起来
docker start 命令为容器文件系统创建一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间
看到这个命令,通常有读者会由一个疑问:docker start 和docker run 命令有什么区别。
docker run 命令是利用镜像创建一个容器,然后运行这个容器,这个命令非常方便,并且隐藏了两个命令的细节。
docker ps 命令会列出所有运行中的容器。这隐藏了非运行态容器的存在,如果想要找出这些容器,我们需要使用下面这个命令。
do具体的安装命令如下:cker ps –a命令会列出所有的容器,不管是运行的,还是停止的。
docker images命令会列出了所有顶层(top-ll)镜像。实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-ll镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层(top-ll)镜像,并且每一个顶层镜像下面都隐藏了多个镜像层。
docker images –a命令列出了所有的镜像,也可以说是列出了所有的可读层。如果你想要查看某一个image-id下的所有层,可以使用docker history来查看。
docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。
docker kill 命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。
docker stop和docker kill命令会发送UNIX的信号给运行中的进程,docker pause命令则不一样,它利用了cgroups的特性将运行中的进程空间暂停但是这种方式的不足之处在于发送一个SIGTSTP信号对于进程来说不够简单易懂,以至于不能够让所有进程暂停。
docker rm命令会移除构成容器的可读写层。注意,这个命令只能对非运行态容器执行。
docker rmi 命令会移除构成镜像的一个只读层。你只能够使用docker rmi来移除最顶层(top ll layer)(也可以说是镜像),你也可以使用-f参数来强制删除中间的只读层。
docker build命令非常有趣,它会反复的执行多个命令。
我们从上图可以看到,build命令根据Dockerfile文件中的FROM指令获取到镜像,然后重复地1)run(create和start)、2)修改、3)commit。在循环中的每一步都会生成一个新的层,因此许多新的层会被创建。
docker exec 命令会在运行中的容器执行一个新进程。
docker inspect命令会提取出容器或者镜像最顶层的元数据。
docker se命令会创建一个镜像的压缩文件,这个文件能够在另外一个主机的Docker上使用。和export命令不同,这个命令为每一个层都保存了它们的元数据。这个命令只能对镜像生效。
docker export命令创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容(译者注:expoxt后的容器再import到Docker中,通过docker images –tree命令只能看到一个镜像;而se后的镜像则不同,它能够看到这个镜像的历史镜像)。
docker history命令递归地输出指定镜像的历史镜像。
10. Docker 安装与配置
如果指定了 这个容器名,就没办法使用 docker-come scale 命令了,因为多个容器名不能一样Docker 是一个开源的应用容器引擎,基于LXC(Linux Container)内核虚拟化技术实现,提供一系列更强的功能,比如镜像、 Dockerfile等;Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。使用沙箱机制运行程序, 程序之间相互隔离;
run启动容器,Docker容器就进入运行态,当我们停止Docker容器时,它就进入退出态。虚拟机运行的是一个完成的作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
构建步骤:参考:
Linux版本CentOS7
使用加速器可以提升获取Docker镜像的速度,下面使用 阿里云镜像 进行加速。
通过修改daemon配置文件 /etc/docker/daemon.json 来使用加速器
Docker 守护进程绑定在 Unix socket 而不是 TCP 端口。默认情况下 Unix socket 归属于 root 用户,其他用户只能通过 sudo 命令访问。所以 Docker 守护进程总是以 root 用户来运行。
如果你不希望每次运行 docker 命令时在前面加上 sudo,你可以创建一个 docker 用户组并把用户加进去。当 Docker 守护进程启动时,会创建一个 Unix socket 供 docker 用户组成员访问
创建 docker 用户组并添加你的用户
什么是 DockerHub 以及为什么它很重要?DockerHub 是一个由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。
有两种库:公共存储库和私有存储库 。如果你是一家公司,你可以在你自己的组织内拥有一个私有存储库,而公共镜像可以被任何人使用。
镜像层和容器层
Docker 服务端是Docker 所有后台服务的统称 。其中dockerd 是一个非常重要的后台管理进程,它负责响应和处理来自Docker 客户端的请求,然后将客户端的请求转化为Docker 的具体作。
例如:镜像、容器、网络和挂载卷等具体对象的作和管理。
Docker 从诞生到现在,服务端经历了多次架构重构。起初,服务端的组件是全部集成在docker 二进制里。但是从 1.11 版本开始, dockerd 已经成了的二进制,此时的容器也不是直接由dockerd 来启动了,而是集成了containerd、runC 等多个组件。
虽然 Docker 的架构在不停重构,但是各个模块的基本功能和定位并没有变化。它和一般的 C/S 架构系统一样,Docker 服务端模块负责和 Docker 客户端交互,并管理Docker 的容器、镜像、网络等资源。
Docker 有两个至关重要的组件: runC和containerd。
runC 是Docker 按照OCI 容器运行时标准的一个实现。通俗地讲,runC 是一个用来运行容器的轻量级工具,是真正用来运行容器的。
containerd 是Docker 服务端的一个核心组件,它是从dockerd 中剥离出来的 ,它的诞生完全遵循OCI 标准,是容器标准化后的产物。containerd通过containerd-shim 启动并管理runC,可以说containerd真正管理了容器的生命周期。
1. 容器中长期运行 程序
有两种方式:
2. 容器 开启和停止 程序
有两种方式
3. 进入容器
有2种方法
想要web部署在互联网上 或者 在Web问 应用;
安装appium
排错,困难
测试adb
查看appium运行日志
容器端口号为 4
开启nginx,就可以在web访问 192.168.0.100;
FROM 指令用于指定其后构建新镜像所使用的基础镜像。FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像。
在镜像的构建过程中执行特定的命令,并生成一个中间镜像。格式:
最多127层,不是写shell ;
Docker的镜像和容器的区别
一转到 此目录下、Docker镜像
要理解Docker镜像和Docker容器之间的区别,确实不容易。
设Linux内核是第0层,那么无论怎么运行Docker,它都是运行于内核层之上的。这个Docker镜像,是一个只读的镜像,位于第1层,它不能被修改或不能保存状态。
一个Docker镜像可以构建于另一个DockerDockerfile其实可以看做一个命令集 。每行均为一条命令。每行的个单词,就是命令command。后面的字符串是该命令所要接收的参数。比如ENTRYPOINT /bin/bash。ENTRYPOINT命令的作用就是将后面的参数设置为镜像的entrypoint。至于现有命令的含义,这里不再详述。DockOne上有很多的介绍。镜像之上,这种层叠关系可以是多层的。第1层的镜像层我们称之为基础镜像(Base
Image),其他层的镜像(除了最顶层)我们称之为父层镜像(Parent
Image)。这些镜像继承了他们的父层镜像的所有属性和设置,并在Dockerfile中添加了自己的配置。
Docker镜像通过镜像ID进行识别。镜像ID是一个64字符的十六进制的字符串。但是当我们运行镜像时,通常我们不会使用镜像ID来引用镜像,而是使用镜像名来引用。要列出本地所有有效的镜像,可以使用命令
# docker images
镜像可以发布为不同的版本,这种机制我们称之为标签(Tag)。
如上图所示,neo4j镜像有两个版本:lastest版本和2.1.5版本。
可以使用pull命令加上指定的标签:
# docker pull ubuntu:14.04
# docker pull ubuntu:12.04
二、Docker容器
Docker容器可以使用命令创建:
# docker run imagename
它会在所有的镜像层之上增加一个可写层。这个可写层有运行在CPU上的进程,而且有两个不同的状态:运行态(Running)和退出态(Exited)。这就是Docker容器。当我们使用docker
我们可以用同一个镜像启动多个Docker容器,这些容器启动后都是活动的,彼此还是相互隔离的。我们对其中一个容器所做的变更只2.查找镜像会局限于那个容器本身。
如果对容器的底层镜像进行修改,那么当前正在运行的容器是不受影响的,不会发生自动更新现象。
如果想更新容器到其镜像的新版本,那么必须当心,确保我们是以正确的方式构建了数据结构,否则我们可能会导致损失容器中所有数据的后果。
64字符的十六进制的字符串来定义容器ID,它是容器的标识符。容器之间的交互是依靠容器ID识别的,由于容器ID的字符太长,我们通常只需键入容器ID的前4个字符即可。当然,我们还可以使用容器名,但显然用4字符的容器ID更为简便。
镜像(Image)
1.列出镜像列表
1.如果需要某个镜像时,可以从 Docker Hub 网站搜索镜像。
2.使用 docker search 命令搜索镜像。比如需要一个 d 镜像来用于构建 web 服务。可通过 docker search 搜索 d ,从而找到适合的镜像。
3.各字段含义如下web 服务不会等待 redis db 「完全启动」之后才启动:
3.删除镜像
使用 ubuntu 16.04 创建一个新容器,在该容器内运行 gcc -v 可查看 gcc 是否安装,查看 gcc 的版本号。
docker commit :从容器创建一个新的镜像
语法
doc下面首先来介绍一下Docker中的主要概念ker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
(指定要创建的目标镜像名)
OPTIONS说明:
4.构建镜像
首先需要一个 Dockerfile 文件,其中包含一系列告诉 Docker 如何构建镜像的指令。
条FROM,指定使用哪个镜像源。
第二条MAINTAINER,说明当前镜像的维护人的信息。
RUN 指令用于说明在构建 docker 镜像时执行哪些命令,例如安装哪些软件。
EXPOSE 指令说明开放哪些端口。
[上传中...(-94439e-1638445720289-0)]
docker b[上传失败...(image-efadd2-1643314980201)]uild
命令用于使用 Dockerfile 创建镜像。
语法
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
5.设置镜像标签
可以使用 docker tag 命令,为镜像添加一个新的标签。
docker tag 命令的语法为:
docker tag <镜像ID> 新镜像名:新tag。
以d为例
容器有一个比较麻烦的地方,就是每次重启之后会导致容器内的文件重置为初始化状态。所以我们还需要对容器内的文件进行持久化配置持久化配置有两种方法
方法二:docker run --name mypromeus -v /zhao/promeus:/etc/promeus -d 镜像id#其中-v是指映射逻辑卷的意思,将宿主机上的/zhao/promeus里的文件和文件夹到容器的/etc/promeus里。-d是指后台运行
Docker容器进入退出的几种方式
docker cp /宿主机目录 容器id:/容器文件目录#将宿主机目录内容到容器内部目录在生产环境中排除了使用docker attach命令进入容器之后,相信大家个想到的就是ssh。在镜像(或容器)中安装SSH ,这样就能保证多人进入,但是使用了Docker容器之后不建议使用ssh进入到Docker容器内。关于为什么不建议使用,请参考如下文章:
docker images往往不知不觉就占满了硬盘空间,为了清理冗余的image,可采用以下方法:为什么不需要在 Docker 容器中运行 sshd
在上面两种方式都不适合的情况下,还有一种比较方便的方法,即使用nsenter进入Docker容器。关于什么是nsenter请参考如下文章:
在了解了什么是nsenter之后,系统默认将我们需要的nsenter安装到主机中
如果没有安装的话,按下面步骤安装即可(注意是主机而非容器或镜像)
安装好nsenter之后可以查看一下该命令的使用。
nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的个进程的PID。可以使用docker inspect 命令来拿到该PID。
docker inspect命令使用如下:
inspect命令可以分层级显示一个镜像或容器的信息。比如我们当前有一个正在运行的容器
可以使用docker insp当我们有一个正在运行的Docker容器时,从运行态到停止态,我们对它所做的一切变更都会地写到容器的文件系统中。要切记,对容器的变更是写入到容器的文件系统的,而不是写入到Docker镜像中的。ect来查看该容器的详细信息。
由其该信息非常多,此处只截取了其中一部分进行展示。如果要显示该容器个进行的PID可以使用如下方式
在拿到该进程PID之后我们就可以使用nsenter命令访问该容器了。
其中的3326即刚才拿到的进程的PID
当然,如果你认为每次都输入那么多参数太麻烦的话,网上也有许多做好的脚本供大家使用。
地址如下:
四、使用docker exec进入Docker容器
接下来我们使用该命令进入一个已经在运行的容器
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。