イメージからコンテナを作成してシェルを起動して入る
オプション -i (--interactive) および -t (--tty) を付与して起動するのがポイント
オプション | 内容 |
---|---|
-i, --interactive | コンテナの STDIN にアタッチ。コンテナの標準入力を開く。/bin/bashなどでコンテナーを操作する際に指定 |
-t, --tty | 疑似ターミナル (pseudo-TTY) を割り当て。ttyを確保。/bin/bashなどでコンテナを操作する際に指定。 |
-d | バックグラウンドで実行。WebやAPサーバなど常時実行するコンテナーで指定 |
--name | {コンテナ名} |
{イメージ名}:{タグ名}
コンテナで実行するコマンド
docker run の最後のコマンドはコンテナを起動して最初に動かすコマンド
例
$ docker run -t -i --name centos_test centos /bin/bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83414f6cd2d2 centos "/bin/bash" 24 seconds ago Up 25 seconds centos_test
$ docker attach 83414f6cd2d2
centos7 で ssh
# yum list installed | grep ssh
でopen-ssh
がインストールされているか確認
なかったら下記コマンドでインストール
# yum -y install openssh-server
# vim /etc/ssh/sshd_config
項目 | 説明 |
---|---|
Port | SSH接続を受け付けるポート番号。 ※今回はデフォルト値を使用するので#でコメントアウト! |
PermitRootLogin | rootユーザーでのログインを許可するか否か。 ※今回は"no"を指定してね! |
PasswordAuthentication | パスワード認証を許可するか否か。 ※今回は"yes"を指定してね! |
# systemctl start sshd.service
Failed to get D-Bus connection: Operation not permitted
ここでこける
--privilegedを付けて、コンテナを立ち上げてから入ることでsystemctlが使えるように
$ docker run --privileged --name centos_test -d centos /sbin/init
$ docker exec -ti centos_test bash
# yum list installed | grep ssh
# yum -y install openssh-server
# vi /etc/ssh/sshd_config
# systemctl start sshd.service
# systemctl status sshd.service
# yum install firewalld
# systemctl start firewalld
# systemctl enable firewalld
# systemctl status firewalld
# firewall-cmd --list-all
# firewall-cmd --permanent --add-service=ssh
# useradd testuser
# passwd testuser
コンテナのIPアドレスを取得
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' centos_test
centos_test: コンテナIDも可