Docker容器中的Emacs无法连接到MELPA

时间:2019-10-16 08:22:51

标签: docker ssh emacs melpa

我目前正面临Emacs无法连接到MELPA的问题。在研究此问题时,我发现在许多主题中都讨论了此问题。但是,我尝试使用的每种建议解决方案都不适用于我,除此之外,我设置Emacs实例的方式使我认为问题的根源可能在其他地方(与emacs本身无关)。

所以让我解释一下我的设置: 我有一台Windows 10主机,并且试图在该主机上运行Linux的GUI Emacs。我尝试了各种方法(VM,用于Windows的Emacs等)。目前,我正在尝试在Docker容器中运行Emacs,并通过X11ing在我的主机上进行X11转发。

主机上的Docker版本:Docker version 19.03.2, build 6a30dfc 我使用this码头集装箱作为基地。但是我对Dockerfile做了一些修改以满足我的需要(我应该提到我以前从未使用过docker):

FROM alpine:edge
MAINTAINER Daniel Guerra <daniel.guerra69@gmail.com>

ARG authorizedKeys=authorized_keys

RUN apk add --update openssh util-linux dbus ttf-freefont xauth xf86-input-keyboard emacs-x11 bash git sudo\
&& rm  -rf /tmp/* /var/cache/apk/*

RUN addgroup alpine \
&& adduser  -G alpine -s /bin/bash -D alpine \
&& echo "alpine:alpine" | /usr/sbin/chpasswd \
&& echo "alpine    ALL=(ALL) ALL" >> /etc/sudoers

RUN cp -r /etc/ssh /ssh_orig
RUN rm -rf /etc/ssh/*

ADD etc /etc
ADD docker-entrypoint.sh /usr/local/bin

VOLUME ["/etc/ssh"]

RUN mkdir -p /home/alpine/.ssh
ADD $authorizedKeys /home/alpine/.ssh/authorized_keys

RUN mkdir -p /home/alpine/.config
RUN git clone https://github.com/minikN/dotemacs.git /home/alpine/.config/emacs/

RUN mkdir -p /home/alpine/.emacs.d
RUN ln -s /home/alpine/.config/emacs/init.el /home/alpine/.emacs.d/init.el
RUN ln -s /home/alpine/.config/emacs/config.el /home/alpine/.emacs.d/config.el
RUN ln -s /home/alpine/.config/emacs/config.org /home/alpine/.emacs.d/config.org

RUN chown -R alpine:alpine /home/alpine/.emacs.d

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["/usr/sbin/sshd","-D"]

我基本上将主机authorized_keys复制到容器中。我这样做是因为我使用的是Putty,它是ssh-agent通过SSH连接到计算机。

之后,我将我的emacs配置从我的GitHub复制到容器中。 您可以找到emacs配置here

如果我现在启动通过SSH连接到它的容器并启动emacs,它将在XMing中打开。但是它只是挂了(实际上整个容器都挂了),我只看到一个白色的屏幕。重新启动容器并运行emacs --daemon后,我可以看到它挂在了

alpine-sshdx:~$ emacs --daemon
Contacting host: melpa.org:443

顺便说一句,我已经检查了几个镜子。 melpa.org:443只是最新的尝试。还尝试了HTTP / HTTPS。

但是ping 8.8.8.8做的很好。

我绝对不知道是什么原因造成的。但我相信这是容器中的东西。

不胜感激。

0 个答案:

没有答案