我正在启动一个本地 docker 容器作为运行我的应用程序的环境,并且我使用 CLion 的远程主机功能来管理工具链。我的应用程序在特定的网络接口上通过各种端口和 IP 地址进行通信。
在一个完美的世界中,我将能够在本地运行我的应用程序,然后还可以通过 CLion 在 docker 容器中启动一个应用程序,并与本地运行的应用程序进行通信。
我知道我可以启动一个 docker 容器,--network=host
但这似乎消除了 SSH 进入 docker 容器的能力,这是使用 CLion 和 docker 的先决条件。有没有办法同时保持两者?使用主机网络但也启用 ssh'ing 到 docker 容器?
我的 Dockerfile 中配置 SSH 代理的片段
########################################################
# Remote debugging and login in
########################################################
RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
# 22 for ssh server. 7777 for gdb server.
EXPOSE 22 7777
RUN useradd -ms /bin/bash debugger
RUN echo 'debugger:pwd' | chpasswd
CMD ["/usr/sbin/sshd", "-D"]
更新: 使用 CLion 2021.3,您不再需要 ssh 进入您的 docker 容器。现在支持它作为自己的工具链类型https://blog.jetbrains.com/clion/2021/10/clion-2021-3-eap-new-docker-toolchain/#new_docker_toolchain