我通常按照以下步骤连接到EC2容器实例,https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance-connect.html想知道如何连接到FARGATE管理的容器实例。
答案 0 :(得分:10)
考虑到github https://github.com/aws/amazon-ecs-cli/issues/143上的该问题,我认为不可能使docker exec从远程主机进入ECS Fargate的容器。您可以尝试使用例如在一个容器中运行ssh守护程序和主进程。 systemd(https://docs.docker.com/config/containers/multi-service_container/)并使用SSH连接到您的容器,但通常在容器世界中并不是一个好主意。
答案 1 :(得分:5)
从 2021 年 3 月中旬开始,当容器在 AWS Fargate 中运行时,可以在 ECS 容器中执行命令,请检查 Using Amazon ECS Exec to access your containers on AWS Fargate and Amazon EC2
快速检查清单:
ssmmessages:..
权限。这应该允许运行 /bin/bash
命令并使交互式 shell 进入在 AWS Fargate 上运行的容器。这一切在我上面引用的文章中都有清楚的解释。
答案 2 :(得分:1)
有可能,但并不容易。 很快:安装SSH,不要将ssh端口从VPC暴露出来,添加堡垒主机,通过堡垒添加SSH。
更多细节:
答案 3 :(得分:1)
以下是将SSH / sshd添加到您的容器以获得直接访问权限的示例:
# Dockerfile
FROM alpine:latest
RUN apk update && apk add --virtual --no-cache \
openssh
COPY sshd_config /etc/ssh/sshd_config
RUN mkdir -p /root/.ssh/
COPY authorized-keys/*.pub /root/.ssh/authorized_keys
RUN cat /root/.ssh/authorized-keys/*.pub > /root/.ssh/authorized_keys
RUN chown -R root:root /root/.ssh && chmod -R 600 /root/.ssh
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
RUN ln -s /usr/local/bin/docker-entrypoint.sh /
# We have to set a password to be let in for root - MAKE THIS STRONG.
RUN echo 'root:THEPASSWORDYOUCREATED' | chpasswd
EXPOSE 22
ENTRYPOINT ["docker-entrypoint.sh"]
# docker-entrypoint.sh
#!/bin/sh
if [ "$SSH_ENABLED" = true ]; then
if [ ! -f "/etc/ssh/ssh_host_rsa_key" ]; then
# generate fresh rsa key
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa
fi
if [ ! -f "/etc/ssh/ssh_host_dsa_key" ]; then
# generate fresh dsa key
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
fi
#prepare run dir
if [ ! -d "/var/run/sshd" ]; then
mkdir -p /var/run/sshd
fi
/usr/sbin/sshd
env | grep '_\|PATH' | awk '{print "export " $0}' >> /root/.profile
fi
exec "$@"
此处有更多详细信息:https://github.com/jenfi-eng/sshd-docker