Help us understand the problem. What is going on with this article?

SSHで接続可能なDocker用のCentOSイメージをPackerで生成する

More than 5 years have passed since last update.

Dockerを使用する際、コンテナの状況を確認するのに、SSH経由で接続できると便利ですが、openssh-serverのインストールや設定、sshd_configの変更等を行う必要があります。

下記は、SSHログイン可能なDockerイメージをPackerで生成する設定です。

docker.json
{
  "builders": [
    {
      "name": "centos6-docker",
      "type": "docker",
      "image": "centos",
      "export_path": "centos6-docker.tar"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "inline": [
        "yum -y update",
        "yum install -y openssh-server",
        "echo 'root:PASSWORD' | chpasswd",
        "ssh-keygen -q -N '' -t dsa -f /etc/ssh/ssh_host_dsa_key",
        "ssh-keygen -q -N '' -t rsa -f /etc/ssh/ssh_host_rsa_key",
        "sed -i 's/UsePAM.*/UsePAM no/g' /etc/ssh/sshd_config",
        "sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config"
      ]
    }
  ],
  "post-processors": [
    {
      "type": "docker-import",
      "repository": "centos6",
      "tag": "latest",
      "only": [
        "centos6-docker"
      ]
    }
  ]
}

上記では、rootログインをPASSWORDで許可しています。鍵等を使用する場合には、別途File Provisioner等を使用して、設定を行う必要があります。

  • 上記設定を使用してPackerでビルドします。
$ packer build docker.json
  • ビルドしたイメージcentos6をsshdを指定して実行してみます。
$ sudo docker run -p 2222:22 centos6 /usr/sbin/sshd -D
  • 下記コマンドで正しくSSHに接続できたかが確認できます。
$ ssh -p 2222 127.0.0.1
ikuyamada
Co-founder, CTO, Studio Ousia http://www.ousia.jp/
http://www.ikuya.net
ousia
”賢い”コンピュータを実現するための自然言語処理や質問応答に関する研究及び製品開発を行っています。
http://ousia.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away