前提・実現したいこと
DockerにてAWSのRDSにトンネルを張るトンネルコンテナを構築したいと思っています。
一番聞きたいこと
- ホストPCからトンネルコンテナを利用してAWS上のRDSに接続したい
- 別コンテナからトンネルコンテナを利用してAWS上のRDSに接続したい
### 詳細
流れとしては、
0. WEBコンテナ
0. DB踏み台コンテナ
0. RDS
のフローで接続を行いたいと思っていますが、まずは検証を行いたいのです。
ssh-agent自体をvolumesとして指定しマウントしてそのまま使用することで秘密鍵の指定等を省いています。
現在ホストから3306ポート指定でmysql-clientで接続をしようとしてもトンネルコンテナのポートフォワードがうまく認識してくれない(もしくはコマンド指定が間違っている)
ので正しい指定方法があれば教えていただきたいです。
トンネルコンテナの中からのRDSの接続は成功しています。
ベースOSにAmazonLinuxを使用しているのは、こちらの事情なので変更はできません。また、Webコンテナはまだ作成していません。
該当のソースコード
現時点でのdocker-composeとdockerfileになります。(一部伏せています)
yml
1version: "3.9" 2services: 3 test: 4 build: 5 context: ./test 6 dockerfile: Dockerfile 7 tty: true 8 9 10 db-tunnel: 11 container_name: db 12 build: 13 context: ./ssh-db 14 dockerfile: Dockerfile 15 tty: true 16 ports: 17 - "3306:3306" 18 volumes: 19 - ./ssh-db/entrypoint.sh:/db/entrypoint.sh:ro 20 - /run/host-services/ssh-auth.sock:/tmp/ssh-agent.sock 21 entrypoint: ./entrypoint.sh 22 command: /bin/bash 23 working_dir: /db 24 environment: 25 SSH_AUTH_SOCK: "/tmp/ssh-agent.sock" 26 USER_NAME: ${USER}
ssh-db/Dockerfile
dockerfile
1FROM --platform=linux/x86_64 amazonlinux:2.0.20191217.0 2 3RUN yum -y update && \ 4 yum -y install openssh-clients 5 6# DEBUG 7# RUN yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 8# RUN yum install -y mysql-community-client
ssh-db/entrypoint.sh
bash
1#!/bin/bash 2 3username=`echo ${USER_NAME} | sed -e 's/./-/g'` 4 5ssh -f -N -L 33306:foo.bar.hoge:3306 ${username}@xxx.xxx.xxx.xxx -o ServerAliveInterval=30 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no 6 7exec "$@"
補足情報(FW/ツールのバージョンなど)
- MacBook Pro (13-inch, M1, 2020) BigSur 11.4
- Docker version 20.10.6, build 370c289
回答1件
あなたの回答
tips
プレビュー