私の質問は、どのようにドッカーのコンテナ内のドッカーマシンのソケットに接続できるようにすることですか?ドッカー・コンテナからドッカー・マシンに通信する方法は?
私は何を達成したいことは、APIゲートウェイをdockerizeすることですが、このAPI-ゲートウェイは、次のように実行されているコンテナを発見できるようにするには、ドッキングウィンドウマシンのソケットに通信する必要がある:
const machine = process.env.DOCKER_HOST
const tls = process.env.DOCKER_TLS_VERIFY
const certDir = process.env.DOCKER_CERT_PATH
if (!machine) {
throw new Error('You must set the DOCKER_HOST environment variable')
}
if (tls === 1) {
throw new Error('When using DOCKER_TLS_VERIFY=1 you must specify the property DOCKER_CERT_PATH for certificates')
}
if (!certDir) {
throw new Error('You must set the DOCKER_CERT_PATH environment variable')
}
const dockerSettings = {
protocol: 'https',
host: machine.substr(machine.indexOf(':', 0) + 3, machine.indexOf(':', 6) - 6),
port: parseInt(machine.substr(-4), 10),
checkServerIdentity: false,
ca: fs.readFileSync(certDir + '/ca.pem'),
cert: fs.readFileSync(certDir + '/cert.pem'),
key: fs.readFileSync(certDir + '/key.pem'),
version: 'v1.25'
}
これはlocalhost上で実行され、env変数へのアクセス権を持ち、ドッカー・マシンソケットにアクセスできます。私はどのように通信するか
は、以下の
const docker = new Docker(dockerSettings)
ようlibarary dockerode
からですが、私はコンテナにドッキングウィンドウのコマンドを実行できるようにするには、コンテナでこのソケットを共有する必要がそれを置くと、これはありますnodejで一種のドッカーサービス発見を行うためのものです。