Docker日志logging到容器

我是Docker新用户。 我面临的第一个问题是login到容器中。

我find解决scheme来执行容器bash命令

 docker exec -it ID bash 

但是,这只是安装/删除软件包的解决scheme。 如果我想在Docker容器中编辑nginxconfiguration,需要使用什么?

其中一个解决scheme可以通过SSH连接login到容器,但也许Docker有这个东西?,我的意思是容易访问没有安装OpenSSH

如何:Docker日志logging到容器

是的你可以。 您可以login正在运行的容器。

现有的docker exec或者docker attach是不够好的。 寻找在Docker容器内启动一个shell? 解决scheme是: jpetazzo / nsenter有两个命令: nsenternsenter docker-enter

如果你在Linux环境下,那么运行下面的命令:

 docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter docker ps # replace <container_name_or_ID> with real container name or ID. PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>) nsenter --target $PID --mount --uts --ipc --net --pid 

那么你在运行的容器中,你现在可以运行任何的linux命令。

我更喜欢其他命令docker-enter 。 如果没有login容器,可以通过docker-enter命令直接在容器中运行linux命令。 其次,我不能记忆nsenter命令的多个选项,也不需要查找容器的PID

 docker-enter 0e8c248982c5 ls /opt 

如果你是Mac或Windows用户,请使用工具箱运行docket:

 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 

如果你是Mac或Windows用户,请使用boot2docker运行docket:

 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 

注意:命令docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter只需要运行一次。

如何:编辑nginxconfiguration

对于第二个问题,你可以在Docker中考虑ONBUILD

 ONBUILD COPY nginx.conf /etc/nginx/nginx.conf 

有了这个解决scheme,你可以:

  1. 在本地编辑nginx.conf ,你可以使用任何存在的编辑器。

  2. 更改nginxconfiguration后,不需要每次都创build映像。

  3. 每次在本地修改nginx.conf文件后,都需要停止,删除并重新运行这个containe,当docker run命令时,新的nginx.conf文件将被部署到docker run

你可以在这里参考关于如何使用ONBUILD的细节: ONBUILD build

如你所说,

docker exec -it container_id bash

然后使用你最喜欢的编辑器编辑任何nginxconfiguration文件。 通常会安装vi或nano,但如果这是您最喜爱的编辑器,则可能需要安装emacs或vim

如果你只有几个字符修改,

docker exec container_id sed ...

可能会做这项工作。 如果你想SSH进入你的容器,你将需要安装SSH并处理SSH密钥,我不确定这是你需要的。

你错了。 您应该很less需要login到容器来编辑文件。

相反,使用-v从主机挂载nginx.conf 。 这样你可以用普通的编辑器编辑文件。 一旦你的configuration按照你想要的方式工作,你就可以build立一个新的映像。

一般来说,你必须进入短暂的容器的思维。 你不打补丁; 你把它们扔掉,用一个固定的版本replace它们。