gpt4 book ai didi

java - 通过 SSH 连接到 docker 容器并执行 Java 程序 (PSVM)

转载 作者:行者123 更新时间:2023-12-02 10:47:00 25 4
gpt4 key购买 nike

我是 Docker 新手,正在努力解决我的作业问题。就是通过SSH连接到docker容器后执行Java程序。

FROM ubuntu:16.04

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | 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

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

FROM java:8
COPY . /var/www/java
WORKDIR /var/www/java

我能够启动容器,但当我尝试使用 IP 地址 ping 时,我没有得到任何响应。

CONTAINER ID        IMAGE               COMMAND               CREATED             
STATUS PORTS NAMES
10301156ddc7 sshsample "/usr/sbin/sshd -D" 37
minutes ago Up 37 minutes 22/tcp
optimistic_bardeen

我的 etc/hosts 文件中确实有 IP 地址。

我的问题是

  1. 为什么我对容器的 ping 操作失败?

  2. 我需要通过 SSH 连接到此容器,然后运行 ​​Java 程序 (PSVM)。

成功解决 ping 问题后,我正在考虑执行以下操作

$ssh root@172.17.0.2  

问题是

通过 SSH 连接到容器后,如何运行位于容器中的 java 程序?执行中

>Java HWorld.java will work from the bash shell ?

这是我第一次尝试学习 docker,所以我尽我所能地解释了。请帮忙。

最佳答案

不要通过 SSH 访问容器

您的 ping 操作失败,因为您启动的 2 个容器位于不同的网络上。您可能需要在两者之间连接一个公共(public)网络才能相互通信。

如果您通过 SSH 进入容器的唯一目的是执行 JAVA 类,那么您可以这样做:HelloWorld.java

public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World from Docker Container....");
}
}

编写如下所示的 Dockerfile 并构建镜像 -

docker build -t sujaypillai/helloworld-java .

enter image description here

这是来自Docker的好博客关于为什么不需要通过 SSH 连接到容器。

关于java - 通过 SSH 连接到 docker 容器并执行 Java 程序 (PSVM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com