Docker登录到容器
我是Docker登录到容器,docker,Docker,我是Docker的新用户。我面临的第一个问题是登录到容器 我找到了通过以下方式执行容器bash命令的解决方案 docker exec -it ID bash 但是,此解决方案仅适用于安装/删除软件包。如果我想在docker容器中编辑nginx配置,应该使用什么 其中一个解决方案可以是通过ssh连接登录到容器,但是可能Docker有自己的解决方案吗?我的意思是不安装OpenSSH就可以轻松访问 正如你所说 docker exec-it容器\u id bash 然后使用您喜爱的编辑器编辑任何ngi
Docker
的新用户。我面临的第一个问题是登录到容器
我找到了通过以下方式执行容器bash命令的解决方案
docker exec -it ID bash
但是,此解决方案仅适用于安装/删除软件包。如果我想在docker容器中编辑nginx配置,应该使用什么
其中一个解决方案可以是通过ssh连接登录到容器,但是可能Docker
有自己的解决方案吗?我的意思是不安装OpenSSH
就可以轻松访问 正如你所说
docker exec-it容器\u id bash
然后使用您喜爱的编辑器编辑任何nginx配置文件。通常会安装vi或nano,但如果这是您最喜欢的编辑器,则可能需要安装emacs或vim
如果只有几个字符需要修改
docker exec container\u id sed…
也许能胜任。如果您想在容器中使用SSH,则需要安装SSH并处理SSH密钥,我不确定这是您需要的。正如您所说
docker exec-it容器\u id bash
然后使用您喜爱的编辑器编辑任何nginx配置文件。通常会安装vi或nano,但如果这是您最喜欢的编辑器,则可能需要安装emacs或vim
如果只有几个字符需要修改
docker exec container\u id sed…
也许能胜任。如果您想在容器中使用SSH,则需要安装SSH并处理SSH密钥,我不确定这是否是您所需要的。您做得不对。您应该很少需要登录到容器来编辑文件 相反,从主机装载带有
-v
的nginx.conf
。这样,您可以使用普通编辑器编辑文件。一旦配置按您想要的方式工作,您就可以使用它构建一个新的映像
一般来说,您必须进入容器是短暂的思维模式。你不会修补它们;你把它们扔掉,换成固定版本。你走错了路。您应该很少需要登录到容器来编辑文件 相反,从主机装载带有
-v
的nginx.conf
。这样,您可以使用普通编辑器编辑文件。一旦配置按您想要的方式工作,您就可以使用它构建一个新的映像
一般来说,您必须进入容器是短暂的思维模式。你不会修补它们;你把它们扔掉,换成固定版本
如何:Docker登录到容器
是的,你可以。您可以登录正在运行的容器
Existdocker exec
或docker attach
不够好。想在Docker容器中启动一个shell吗?解决方案是:使用两个命令:nsenter
和docker-enter
如果您在Linux环境中,请运行以下命令:
如果您是mac或windows用户,请使用工具箱运行摘要:
如果您是mac或windows用户,请使用boot2docker运行docket:
注意:命令dockerrun--rm-v/usr/local/bin:/target-jpetazzo/nsenter
只需运行一次
如何:编辑nginx配置
对于第二个问题,您可以考虑Docker中的ONBUILD
ONBUILD COPY nginx.conf /etc/nginx/nginx.conf
使用此解决方案,您可以:
nginx.conf
,您可以使用任何现有编辑器nginx.conf
文件后,需要停止、删除并重新运行containe,新的nginx.conf
文件将在docker run
命令时部署到container中ONBUILD
的详细信息:
如何:Docker登录到容器
是的,你可以。您可以登录正在运行的容器
Existdocker exec
或docker attach
不够好。想在Docker容器中启动一个shell吗?解决方案是:使用两个命令:nsenter
和docker-enter
如果您在Linux环境中,请运行以下命令:
如果您是mac或windows用户,请使用工具箱运行摘要:
如果您是mac或windows用户,请使用boot2docker运行docket:
注意:命令dockerrun--rm-v/usr/local/bin:/target-jpetazzo/nsenter
只需运行一次
如何:编辑nginx配置
对于第二个问题,您可以考虑Docker中的ONBUILD
ONBUILD COPY nginx.conf /etc/nginx/nginx.conf
使用此解决方案,您可以:
nginx.conf
,您可以使用任何现有编辑器nginx.conf
文件后,需要停止、删除并重新运行containe,新的nginx.conf
文件将在docker run
命令时部署到container中您可以在此处参考如何使用
ONBUILD
的详细信息:docker exec有什么问题?@AdrianMouat,我运行docker exec
,但有时只有空白窗口,有时直接注销。对于nsenter
,我没有这个问题。我在docker exec方面几乎没有问题,除非必要,否则建议不要使用额外的nsenter复杂性。我从未见过“空白窗口”(我不确定这是什么意思),但听起来像个bug。@AdrianMouat不错,也许你可以帮助解决这个问题:docker run-d-p 10086:10086-v/var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull
,然后docker exec d57eb761985b sh
。你能登录这个容器吗?@AdrianMouat关于你的书使用Docker,如果你能将它作为电子书(如pdf)出版,并像Docker的书那样不断更新,我将首先购买这本书。我
docker-machine ssh default
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
PID=$(docker inspect --format {{.State.Pid}} 0e8c248982c5)
sudo nsenter --target $PID --mount --uts --ipc --net --pid
boot2docker ssh
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
PID=$(docker inspect --format {{.State.Pid}} 0e8c248982c5)
sudo nsenter --target $PID --mount --uts --ipc --net --pid
ONBUILD COPY nginx.conf /etc/nginx/nginx.conf