Hej mój cel jest następujący: chcę stworzyć kontener z zainstalowanym Pythonem i następnie połączyć się ze stworzonym tam kernelem za pomocą Spydera zainstalowanego na lokalnym komputerze. Oto co robię:
Mój dockerfile:
FROM ubuntu:latest
RUN apt update && apt install openssh-server sudo -y
# Create a user “sshuser” and group “sshgroup”
RUN groupadd sshgroup && useradd -ms /bin/bash -g sshgroup sshuser
# Create sshuser directory in home
RUN mkdir -p /home/sshuser/.ssh
# Copy the ssh public key in the authorized_keys file. The idkey.pub below is a public key file you get from ssh-keygen. They are under ~/.ssh directory by default.
COPY key.pub /home/sshuser/.ssh/authorized_keys
# change ownership of the key file.
RUN chown sshuser:sshgroup /home/sshuser/.ssh/authorized_keys && chmod 600 /home/sshuser/.ssh/authorized_keys
# Start SSH service
RUN service ssh start
# Expose docker port 22
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
USER root
RUN apt update
RUN apt-get install python3-pip -y
RUN pip install jupyter
RUN pip install spyder-kernels
Następnie w Powershellu wpisuje
docker build -t sshubuntu .
docker run -d -p 2022:22 sshubuntu
ssh -i key sshuser@localhost -p 2022 #
jupyter --runtime-dir # /home/sshuser/.local/share/jupyter/runtime
python3 -m spyder_kernels.console
To tworzy mi kernel w kontenerze i odpowiedni plik json z ustawieniami. Teraz otwieram nowe okno Powershella i kopiuje tego json'a na lokalny komputer
docker cp 21ff6e147a2d:/home/sshuser/.local/share/jupyter/runtime/kernel-24.json .
Plik wyglada nastepujaco:
{
"shell_port": 46227,
"iopub_port": 34519,
"stdin_port": 43075,
"control_port": 38781,
"hb_port": 44761,
"ip": "127.0.0.1",
"key": "1c925c4a-983896e82c953e4fccb7ce90",
"transport": "tcp",
"signature_scheme": "hmac-sha256",
"kernel_name": ""
}
Na koncu otwieram Spydera -> Connect to an existing kernel i wpisuje to co na zdjeciu, niestety nie dziala (connecting to kernel sie kreci w nieskonczonosc). Tutaj jest instrukcja ktora probuje nasladowac: http://docs.spyder-ide.org/current/panes/ipythonconsole.html#connect-to-a-remote-kernel
Jest mi ktos w stanie powiedziec co robie zle?