联通的路由器被tp路由器恢复出厂设置置后,按原来的密码连无线网无网络访问,怎么办

中国领先的IT技术网站
51CTO旗下网站
为什么不需要在Docker容器中运行sshd
在一个容器中运行SSH服务器,这真的是一个错误(大写字母W)吗?老实说,没那么严重。当你不去访问Docker主机的时候,这样做甚至是极其方便的,但是这仍然需要在容器中取得一个shell……
作者:来源:开源中国社区 编译| 09:31
当开始使用Docker时,人们经常问:&我该如何进入容器?&,其他人会说&在你的容器里运行一个SSH服务器&。但是,从这篇博文中你将会了解到你根本不需要运行SSHd守护进程来进入你的容器。当然,除非你的容器就是一个SSH服务器。
运行SSH服务器是很想当然的,因为它提供了进入容器的简便方式。在我们公司基本上每个人都最少使用过一次SSH。我们中有很大一部分人每天都会使用它,并且他们很熟悉公钥与私钥,无密码登录,密钥代理,甚至有时会使用端口转发和其他不常用的功能。正因如此,人们建议你在容器中运行SSH并不奇怪。但你应该仔细考虑下。
假设你正在假设一个Redis Server或Java Webservice的Docker镜像, 我会问你以下几个问题:
你需要用SSH来做什么? 一般来说, 你想做备份, 检查日志, 或者重启进程, 调整配置, 还有可能用gdb, strace或其他类似的工具来debug服务器。那我们会看一下我们怎么不使用SSH来做这些事情。
你怎么管理你的密钥和密码的?一般来说,你要么把它们写到你的镜像中,要么就把它们放在一个卷中。你想一下如果你要更新这些密钥或密码你会怎么做呢。如果你把它们写到镜像里了,你就需要重建镜像,重新部署它们,然后重启容器。这还好,不算是世界末日,但是这绝不是一个高大上的方法。把它们放到卷中,然后通过管理卷来管理它们倒是比前一种好得多。这种方法是可用的,可是却有严重的缺陷。你必须要确认容器没有这个卷的写权限;否则,容器有可能会破坏密钥(这让你之后就进不去容器了),如果你再用一个卷共享给多个容器的话,情况会变得更糟。如果不用SSH,我们不就少一个需要担心的事了吗?
你如何管理安全升级呢?SSH服务器是挺安全的,但是仍然会有安全问题,你会在必要的时候不得不升级所有使用SSH的容器。这意味着大量的重建和重启。也就是说,及时你有一个简单小巧的memcached服务,你还是不得不确保及时的安全更新,否则千里之堤可能毁于蚁穴。所以还是这句话,如果不用SSH,我们不就少一个需要担心的事了吗?
你需要&仅安装一个SSH服务器&来达到目的吗?当然不。你需要加装进程管理器,比如Monit或者Supervisor。这是因为Docker自己只会监视一个进程。如果你需要运行多个进程,你就必须在上面加装一层可以看着他们的应用。换句话说,你在把简单问题复杂化。如果你的应用停了(正常退出或者崩溃),你必须要从你的进程管理日志里面去查看,而不能简单的查看Docker提供的信息。
你可以负责把应用放到容器中,但你是否应该同时负责管理访问策略和安全限制呢?在小机构中,这都不是事。但是在大型机构中,如果你是负责设立应用容器的人,那很可能有另外一个人负责定义远程访问策略。你所在的公司很可能有严格的策略定义说明谁能访问,如何访问或者其他各种审查跟踪的要求。那样的话,你肯定不会被允许把一个SSH服务器扔进你的容器中。
但我该如何做&
备份我的数据?
你的数据应该存在于&中. 然后你可以使用--volumes-from选项来运行另一个容器,与第一个容器共享这个volume。这样做的好处:如果你需要安装新的工具(如s75pxd)来将你备份的数据长期保存,或将数据转移到其他永久存储时,你可以在这个特定的备份容器中进行,而不是在主服务容器中。这很简洁。
再次使用&! 如果你将所有日志写入一个特定的目录下,且这个目录是一个volume的话,那你可以启动另一个log inspection&&容器(使用--volumes-from,还记得么?)且在这里面做你需要做的事。如果你还需要特殊的工具(或只需要一个有意思的ack-grep),你可以在这个容器中安装它们,这样可以保持主容器的原始环境。
重启service?
基本上所有service都可以通过信号来重启。当你使用/etc/init.d/foo restart或service foo restart时,实际上它们都会给进程发送一个特定的信号。你可以使用docker kill -s &signal&来发送这个信号。一些service可能不会监听这些信号,但可以在一个特定的socket上接受命令。如果是一个TCP socket,只需要通过网络连接上就可以了。如果是一个UNIX套接字,你可以再次使用volume。将容器和service的控制套接字设置到一个特定的目录中,且这个目录是一个volume。然后启动一个新的容器来访问这个volume;这样就可以使用UNIX套接字了。
&但这也太复杂了吧!&-其实不然。假设你名为foo的servcie 在/var/run/foo.sock创建了一个套接字,且需要你运行fooctl restart来完成重启。只需要使用-v /var/run(或在Docker文件中添加VOLUME /var/run)来启动这个service就可以了。当你想重启的时候,使用--volumes-from选项并重载命令来启动相同的镜像。像这样:
&CID=$(docker&run&-d&-v&/var/run&fooservice) &&docker&run&--volumes-from&$CID&fooservice&fooctl&restart&
修改我的配置文件
如果你正在执行一个持久的配置变更,你最好把他的改变放在image中,因为如果你又启动一个container,那么服务还是使用的老的配置,你的配置变更将丢失。所以,没有您的SSH访问!&但是我需要在服务存活期间,改变我的配置;例如增加一个新的虚拟站点!&这种情况下,你需要使用&&等待&&volume!配置应该在volume中,并且该volume应该和一个特殊目的&配置编辑器&容器共享。你可以在这个容器中使用任何你喜欢的东西:SSH + 你最喜欢的编辑器,或一个接受API调用的web服务,或一个从外部源抓取信息的定时任务;诸如此类。另外,分离关注:一个容器运行服务,另外一个处理配置更新。&但是我做临时更改,因为我正在测试不同的值!&在这种情况下,查看下一章节!
调试我的应用?
这可能是唯一需要进入container的场景了。因为你要运行gdb, strace, tweak配置,等。这种情况下,你需要 nsenter。
介绍&nsenter
nsenter是一个小的工具,用来进入命名空间中。技术上,它可以进入现有的,或者产生一个进程进入新的一组命名空间。&命名空间是什么?&他们是容器的重要组成部分。简单点说:通过使用 nsenter ,你可以进入一个已经存在的container中,尽管这个container没有运行ssh 或者任意特殊用途的守护进程。
从哪里获得 nsenter ?
在GitHub上查看&&。简单的安装是:
docker&run&-v&/usr/local/bin:/target&jpetazzo/nsenter&
它将会把 nsenter 安装到&/usr/local/bin 中,你就可以立刻使用它了。
nsenter 也可以在你的发行版中获得(在 util-linux 包中)。
如何使用?
首先,计算出你要进入容器的PID:
PID=$(docker&inspect&--format&{{.State.Pid}}&&container_name_or_ID&)&
然后进入容器:
nsenter&--target&$PID&--mount&--uts&--ipc&--net&--pid&
在容器里,可以操作shell解析器。如果要想以自动化的方式来运行特殊的脚本或程序,把它作为参数添加到nsenter中。除了它使用容器代替了简单目录来工作外,它的工作方式有点像chroot。
远程访问怎么样?
如果你需要从一个远程主机进入一个容器,有(至少)两个方法:
SSH 进入 Docker 主机,并使用
SSH 进入 Docker 主机,通过一个特殊的密钥参数授权esenter命令& (也就是,nsenter)。
第一种方法相对简单;但是需要root权限访问Docker主机(从安全角度来说不是很好)。第二种方法在 SSH 的&authorized_keys 文件中使用&command=&模式。你可能熟悉&&古典的&&authorized_keys文件,它看起来像这样:
ssh-rsa&AAAAB3N&QOID==&jpetazzo@tarrasque&
(当然,实际上一个真正的密钥是很长的,一般都会占据好几行。)你也可以强制使用一个专有的命令。如果你想要在你的系统上查看一个远程的主机上可以有效使用的内存,可以使用SSH密钥,但是你不会希望交出所有的shell权限,你可以在authorized_keys文件中输入下面的内容:
command=&free&&ssh-rsa&AAAAB3N&QOID==&jpetazzo@tarrasque&
现在,当使用专有的密钥进行连接时,替换取得的shell,它可以执行free命令。除此之外,就不能做其他的。(通常,你可能还想要添加no-port-forwarding;如果希望了解更多信息可以查看authorized_keys(5)的手册(manpage))。这种机制的关键是使得责任分离。Alice把服务放在容器内部;她不用处理远程的访问,登陆等事务。Betty会添加SSH层,在特殊情况(调试奇怪的问题)下使用。Charlotte会考虑登陆。等等。
在一个容器中运行SSH服务器,这真的是一个错误(大写字母W)吗?老实说,没那么严重。当你不去访问Docker主机的时候,这样做甚至是极其方便的,但是这仍然需要在容器中取得一个shell。除此之外,我们还有许多方式可以在容器中运行SSH服务器,并能取得所有我们想要的特性,而且其架构还非常清晰。Docker允许你使用任何最适合你的工作流。但是,在做这些之前,迅速步入&我的容器真的是一个小的VPS&这句流行语的(语境)时,请注意还有其他的解决方案,这样你才可以做出一个明智的决定。
英文原文:
译文出自:【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
外电头条头条外电外电
24H热文一周话题本月最赞
讲师:1人学习过
讲师:35人学习过
讲师:0人学习过
精选博文论坛热帖下载排行
本书是根据全国计算机技术与软件专业技术资格(水平)考试的“计算机网络管理员考试大纲”所要求的考试范围而编写的辅导用书。全书共分10章...
订阅51CTO邮刊Linux、hadoop、Docker(55)
docker类式于为沙盒中运行的线程,可以看做是一个简易的linux系统,容器的ID与名称都是唯一的,可以通过ID的前3位进行访问这个容器,Docker
使用一个叫做&&的层级文件系统进行镜像操作。容器对镜像文件的所有操作均是在虚拟出的“改动层”上进行的,与docker相关的本地资源都放在/var/lib/docker/目录下。Docker的理念是一个容器只运行一个服务,从宿主机进入容器是通过exec命令进去的,但是如果要从远程进入,除了给容器安装相应的ssh服务,目前没有更好的办法。
& & & & docker提供了数据卷-v参数实现,用于保存数据,比如数据库日志文件等,需要将容器的目录挂在在宿主机上,这样在宿主机上,就可以看到各个容器里面的数据信息,但是有一个前提,你需要把容器什么路径给挂载出去,这个时候,可以通过docker
inspect 容器/镜像 命令查看该镜像的相关路径信息,比如nginx,你需要进入那个nginx容器里面,查看配置conf.xml文件,配置反向代理,配置好后,记得要使用docker commit命令保存一下,否则你的所有修改,将在下一次启动时将会丢失,我配置mysql的时候,看到默认提供的账户密码,突然间就不知道该怎么用,因为有些账户比如root只能本地访问。远程访问的时候 只能用admin,但是我只用admin账户的时候,提示错误,要我必须制定root密码-e &MY-ROOT-PASSWORD,oracle的远程访问,还没有用过,如果实际应用的话,建议还是自己写一个dockfile比较好,至少挂载目录都可以确定。
& & & 如何启动多个docker容器为系统服务,可以参照linux中脚本来搞。(1)、root权限编辑/etc/rc.d/rc.local
& &&cd /etc/rc.d/ & &vi
rc.local &/autoStart.sh&(2)、在这个文件加上你要执行的脚本,全部内容如下:#!/bin/sh
& autoStart.sh & &docker start mysql &dockerui nginx redis.然后赋予这个脚本权限,chomd 777 /autoStart.sh
& & & & dockerfile一般由基础镜像信息,维护者信息,镜像操作指令和容器启动命令四部分组成,可以通过docker
build -t & 标签名称 dockefile的路径 命令进行创建镜像。然后使用docker run &--name & 镜像别名 镜像名称
可以通过exec命令进入这个容器中进行访问,退出用exec命令
(HOST) # docker exec -it container-id/container-name bash
(CONTAINER) root@1f608dc4e5b4:/# echo hello docker & /message.txt
(CONTAINER) root@1f608dc4e5b4:/# cat /message.txt
hello docker
(CONTAINER) root@1f608dc4e5b4:/# exit
& & & & & 每次运行 docker run 命令的时候,Docker 都会指定新建容器,并用命名空间进行隔离,对比起
ID,容器的名称更加易读。你也可以在 docker run 的时候用 --name 参数指定容器的名称。
& & & & & & &容器之间相互通信,可以通过--link指令进行,容器与宿主机之间的文件操作,有两种方式,一种是通过-v
把容器里面的数据挂载到宿主机上面(一般安装数据库需要这样的操作)
docker run -d -p
-v /data/data/:/data
&-v /data/log:/log --name oracle & wnameless/oracle-xe-11g
譬如我要启动一个CentOS容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:
# docker run -it -v /test:/soft centos /bin/bash
这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号&:&前面的目录是宿主机目录,后面的目录是容器内目录。另外一种是通过cp命令,实现文件之间的复制,
从主机复制到容器sudo docker cp & host_path & & containerID:container_path
从容器复制到主机sudo docker cp & &containerID:container_path
& &host_path
& & & & 如何给容器固定一个IP(安装数据库中常常需要这样的设置),可以使用pipwork工具实现。docker的图形管理页面工具有很多,常见的有dickerUI、seagull等等。
& & & & 如何备份一份容器文件,有两种方式,用export这种方式导出的数据不全、container-backup为备份进程所对应的镜像的名称,~/container-backup.tar
意思为主目录下,名称为container-backup.tar ,详细可参看
docker commit -p contain_Id container-backup
docker save -o ~/container-backup.tar container-backup
docker load -i ~/container-backup.tar
& & & &查看一个dockflie文件所有的信息&可以通过使用docker & inspect & contan-id命令查看(检查镜像或者容器的参数,默认返回 JSON 格式)比如查看宿主机的挂载目录
& & &为了更好的管理镜像,可以在本地搭建一个私有的仓库,通过registry镜像创建(首先先docker pull redistry),默认目录是在/tmp/registry下面
docker run -d -p
-v /zssHome:/tmp/registry &--name &House &registry
这将自动下载,并启动一个registry容器,此时在本地将启动一个私有仓库服务,监听端口为5000,具体操作细节,请参考
centos系统中docker配置启动文件在 /etc/sysconfig/docker里面添加命令即可,
[root@localhost ~]# vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.0.109:5000'
//添加私有仓库地址
[root@localhost ~]# service docker restart
Redirecting to /bin/systemctl restart
docker.service
参考教材:Docker技术入门与实战、Spring &boot实战
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:234280次
积分:4105
积分:4105
排名:第6553名
原创:104篇
转载:585篇
评论:18条
(16)(19)(24)(7)(10)(50)(46)(45)(28)(15)(75)(31)(37)(39)(19)(19)(32)(11)(12)(43)(12)(30)(13)(37)(21)docker如何创建一个运行后台进程的容器并同时提供shell终端_docker中文社区_ThinkSAAS
docker如何创建一个运行后台进程的容器并同时提供shell终端
docker如何创建一个运行后台进程的容器并同时提供shell终端
内容来源: 网络
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信使用 Docker 容器应该避免的 10 个事情 - 技术翻译 - 开源中国社区
使用 Docker 容器应该避免的 10 个事情
【已翻译100%】
英文原文:
推荐于 1年前 (共 6 段, 翻译完成于 03-01)
参与翻译&(2人)&: ,
当你最后投入容器的怀抱,发现它能解决很多问题,而且还具有众多的优点:
第一:它是不可变的&– 操作系统,库版本,配置,文件夹和应用都是一样的。您可以使用通过相同QA测试的镜像,使产品具有相同的表现。
第二:它是轻量级的&– 容器的内存占用非常小。不需要几百几千MB,它只要对主进程分配内存再加上几十MB。
第三:它很快速&– 启动一个容器与启动一个单进程一样快。不需要几分钟,您可以在几秒钟内启动一个全新的容器。
&翻译得不错哦!
但是,许多用户依然像对待典型的虚拟机那样对待容器。但是他们都忘记了除了与虚拟机相似的部分,容器还有一个很大的优点:它是一次性的。
容器的&准则&:
“容器是临时的”。
这个特性“本身”促使用户改变他们关于使用和管理容器的习惯;我将会向您解释在容器中不应该做这些事,以确保最大地发挥容器的作用。
&翻译得不错哦!
1) 不要在容器中存储数据&– &容器可能被停止,销毁,或替换。一个运行在容器中的程序版本1.0,应该很容易被1.1的版本替换且不影响或损失数据。有鉴于此,如果你需要存储数据,请存在卷中,并且注意如果两个容器在同一个卷上写数据会导致崩溃。确保你的应用被设计成在共享数据存储上写入。
2) 不要将你的应用发布两份&– &一些人将容器视为虚拟机。他们中的大多数倾向于认为他们应该在现有的运行容器里发布自己的应用。在开发阶段这样是对的,此时你需要不断地部署与调试;但对于质量保证与生产中的一个连续部署的管道,你的应用本该成为镜像的一部分。记住:容器应该保持不变。
&翻译得不错哦!
3) 不要创建超大镜像&– 一个超大镜像只会难以分发。确保你仅有运行你应用/进程的必需的文件和库。不要安装不必要的包或在创建中运行更新(yum更新)。
4) 不要使用单层镜像&– 要对分层文件系统有更合理的使用,始终为你的操作系统创建你自己的基础镜像层,另外一层为安全和用户定义,一层为库的安装,一层为配置,最后一层为应用。这将易于重建和管理一个镜像,也易于分发。
5) 不要为运行中的容器创建镜像&– 换言之,不要使用“docker commit”命令来创建镜像。这种创建镜像的方法是不可重现的也不能版本化,应该彻底避免。始终使用Dockerfile或任何其他的可完全重现的S2I(源至镜像)方法。
&翻译得不错哦!
6) 不要只使用“最新”标签&– 最新标签就像Maven用户的“快照”。标签是被鼓励使用的,尤其是当你有一个分层的文件系统。你总不希望当你2个月之后创建镜像时,惊讶地发现你的应用无法运行,因为最顶的分层被非向后兼容的新版本替换,或者创建缓存中有一个错误的“最新”版本。在生产中部署容器时应避免使用最新。
7) 不要在单一容器中运行超过一个进程&– 容器能完美地运行单个进程(http守护进程,应用服务器,数据库),但是如果你不止有一个进程,管理、获取日志、独立更新都会遇到麻烦。
&翻译得不错哦!
8) 不要在镜像中存储凭据。使用环境变量&–不要将镜像中的任何用户名/密码写死。使用环境变量来从容器外部获取此信息。有一个不错的例子是。
9) 使用非root用户运行进程&–&“docker容器默认以root运行。(…)随着docker的成熟,更多的安全默认选项变得可用。现如今,请求root对于其他人是危险的,可能无法在所有环境中可用。你的镜像应该使用USER指令来指令容器的一个非root用户来运行。”(来自 )
10) 不要依赖IP地址&– 每个容器都有自己的内部IP地址,如果你启动并停止它地址可能会变化。如果你的应用或微服务需要与其他容器通讯,使用任何命名与(或者)环境变量来从一个容器传递合适信息到另一个。
&翻译得不错哦!
我们的翻译工作遵照 ,如果我们的工作有侵犯到您的权益,请及时联系我们
我们公司就是不知道上一任运维怎么想的
+1~ 然而我觉得docker只是很好配合自动化以及同步环境
引用来自“zhenruyan”的评论我们公司就是不知道上一任运维怎么想的docker有那种专门做数据存储的镜像,把数据库程序跟数据存储部分分别放在两个不同的容器里面,然后这样升级数据库的时候存储不会受到影响,而备份恢复数据的话不需要哭咔咔的去跑sql,只要定时commit数据存储container,到时候重新拉起来以前版本的commit的镜像即可,还是很方便的。
引用来自“zhenruyan”的评论我们公司就是不知道上一任运维怎么想的引用来自“巴林的狗尾草”的评论docker有那种专门做数据存储的镜像,把数据库程序跟数据存储部分分别放在两个不同的容器里面,然后这样升级数据库的时候存储不会受到影响,而备份恢复数据的话不需要哭咔咔的去跑sql,只要定时commit数据存储container,到时候重新拉起来以前版本的commit的镜像即可,还是很方便的。感觉很矛盾,1) 不要在容器中存储数据, 同时又有Postgres容器的存在。
引用来自“zhenruyan”的评论我们公司就是不知道上一任运维怎么想的引用来自“巴林的狗尾草”的评论docker有那种专门做数据存储的镜像,把数据库程序跟数据存储部分分别放在两个不同的容器里面,然后这样升级数据库的时候存储不会受到影响,而备份恢复数据的话不需要哭咔咔的去跑sql,只要定时commit数据存储container,到时候重新拉起来以前版本的commit的镜像即可,还是很方便的。引用来自“_Elvis”的评论感觉很矛盾,1) 不要在容器中存储数据, 同时又有Postgres容器的存在。具体看官方文档,这个可是docker推荐的方案。
没错,容器是一次性的,临时的。需要永久保存的数据不应该存储于**运行中**的容器中(没有加粗效果,所以用markdown的语法代替了)。但是真要永久保存数据呢?于是docker官方建议的方案有两种,一种是挂载外部目录进容器,类似于mount效果,将数据存储外部化。另一种则符合docker官方的口号: Dockerlized everything,即用数据卷(Data Volume)的方式存储外部数据。数据卷容器无需运行,可以从任何镜像中生成,只要不删容器,那么数据存储将是永久的。
引用来自“zhenruyan”的评论我们公司就是不知道上一任运维怎么想的引用来自“巴林的狗尾草”的评论docker有那种专门做数据存储的镜像,把数据库程序跟数据存储部分分别放在两个不同的容器里面,然后这样升级数据库的时候存储不会受到影响,而备份恢复数据的话不需要哭咔咔的去跑sql,只要定时commit数据存储container,到时候重新拉起来以前版本的commit的镜像即可,还是很方便的。引用来自“_Elvis”的评论感觉很矛盾,1) 不要在容器中存储数据, 同时又有Postgres容器的存在。不矛盾啊,不要把数据放在容器中(containers),应该把数据放在数据卷中(volumes),以挂载的方式和容器相连
引用来自“zhenruyan”的评论我们公司就是不知道上一任运维怎么想的引用来自“巴林的狗尾草”的评论docker有那种专门做数据存储的镜像,把数据库程序跟数据存储部分分别放在两个不同的容器里面,然后这样升级数据库的时候存储不会受到影响,而备份恢复数据的话不需要哭咔咔的去跑sql,只要定时commit数据存储container,到时候重新拉起来以前版本的commit的镜像即可,还是很方便的。引用来自“_Elvis”的评论感觉很矛盾,1) 不要在容器中存储数据, 同时又有Postgres容器的存在。是建议存在卷中,可以这样理解:Postgres容器相当于启动盘,卷相当于数据硬盘,虽然启动盘也可以存储数据,但是重装有可能会整个启动盘重写而覆盖数据,但是数据硬盘你没什么事应该不会去乱动它。
引用来自“lanmingle”的评论+1~ 然而我觉得docker只是很好配合自动化以及同步环境-1~docker现在的应用远超你想象,可以再希云或者infoq了解一下docker的应用
引用来自“温习江湖”的评论Solaris?oracle-xe-11g 按照镜像的说明方式就是启动不了数据库实例,你知道缺什么不?
引用来自“zhenruyan”的评论我们公司就是不知道上一任运维怎么想的引用来自“巴林的狗尾草”的评论docker有那种专门做数据存储的镜像,把数据库程序跟数据存储部分分别放在两个不同的容器里面,然后这样升级数据库的时候存储不会受到影响,而备份恢复数据的话不需要哭咔咔的去跑sql,只要定时commit数据存储container,到时候重新拉起来以前版本的commit的镜像即可,还是很方便的。引用来自“_Elvis”的评论感觉很矛盾,1) 不要在容器中存储数据, 同时又有Postgres容器的存在。引用来自“zyuyou”的评论是建议存在卷中,可以这样理解:Postgres容器相当于启动盘,卷相当于数据硬盘,虽然启动盘也可以存储数据,但是重装有可能会整个启动盘重写而覆盖数据,但是数据硬盘你没什么事应该不会去乱动它。可以这么理解。
引用来自“zhenruyan”的评论我们公司就是不知道上一任运维怎么想的引用来自“巴林的狗尾草”的评论docker有那种专门做数据存储的镜像,把数据库程序跟数据存储部分分别放在两个不同的容器里面,然后这样升级数据库的时候存储不会受到影响,而备份恢复数据的话不需要哭咔咔的去跑sql,只要定时commit数据存储container,到时候重新拉起来以前版本的commit的镜像即可,还是很方便的。引用来自“_Elvis”的评论感觉很矛盾,1) 不要在容器中存储数据, 同时又有Postgres容器的存在。引用来自“zyuyou”的评论是建议存在卷中,可以这样理解:Postgres容器相当于启动盘,卷相当于数据硬盘,虽然启动盘也可以存储数据,但是重装有可能会整个启动盘重写而覆盖数据,但是数据硬盘你没什么事应该不会去乱动它。明白了,多谢!
你的做法是正确,也是可取的。但是你仅仅做了一个PHP的工作,docker的目标是将你这种打包PHP的方式运用到所有软件,所有环境。

我要回帖

更多关于 威联通 恢复出厂设置 的文章

 

随机推荐