dockerポートマッピング

2486 ワード

例1:コンテナにhttpdサービスがインストールされています.外部ネットワークにどのようにアクセスさせますか.
  • まずcentosミラーを使用して新しいコンテナを作成し、そのコンテナにhttpサービスをインストールし、
  • を起動します.
  • コンテナを新しいミラー(centos-httpd)に導き、新しいミラーを使用してコンテナを作成し、ポートマッピング
  • を指定します.
  • 例:docker commit-m"centos_httpd"-a"aminglinux"313 centos_httpd:hu
  • 説明:centos_httpdは容器の名前、huはtagの名前313は容器のid
  • docker run -itd -p 5123:80 centos_httpd bash  //-p         ,       80        5123  
    docker  exec -it container_id  bash
  • httpd:httpd-k startを起動 
  • 編集1.html:vi/var/www/html/1.html適当に書く
  • このコンテナを終了:exit
  • テスト:curl 127.0.0.1:523/1.html (このipはホストのIpです)コンテナ内のサイト
  • に直接アクセスできます.
  • -pの後にもIP:port:ip:portのフォーマットがサポートされています.例えば、
  • -p 127.0.0.1:8080:80 
  • は、ローカルのポートを書かずにipだけを書くこともでき、1つのポート
  • を任意に割り当てることができます.
  • -p 127.0.0.1::80 

  • 例2:dockerコンテナはどのようにして外部ネットワークをsshで接続しますか?
    以下に示すシステムはcentos 7コンテナベースです
    1コンテナを作成してログインする
    docker run -it centos/bin/bash
    2 sshdサービスのインストール
    yum install passwd openssl openssh-server -y
    3 sshdサービスを開始し、sshd_confプロファイルを変更する
    /usr/sbin/sshd -D
    エラーは次のとおりです.
    Could not load host key: /etc/ssh/ssh_host_rsa_key
    Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    Could not load host key: /etc/ssh/ssh_host_ed25519_key

    解決策:
     ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
     ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
    ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N ''
    vi /etc/ssh/sshd_config
    sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

    警告が表示される可能性がありますが、結果には影響しません.
    4コンテナrootにパスワードを設定する
    passwd rootパスワードを2回入力
    5、パスワードを変更してexitコマンドを実行して終了すると、ホストマシンのshellに戻り、次のコマンドを実行してコンテナをミラーにコミットします.
    docker commit 7b7 hu/centos7-ssh  ##7 b 7は先ほど操作した容器idです
    7473918b361eefd14548991654f99b8138bf203d686b46aa3ec7c25a6b7c0f20
    docker p_w_picpathsの実行 生成されたミラーのコミット
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    hu/centos7-ssh      latest              7473918b361e        18 seconds ago      279 MB
    6新しいコミットされたミラーを新しいコンテナに生成し、ポートをマッピング
    docker run -it -p 10022:22 hu/centos7-ssh /usr/sbin/sshd -D

    次にdocker psはポートマッピングに成功したかどうかを確認します
    7ホストがこのコンテナに接続
    ssh root@localhost-p 10022パスワードの入力を求める 
    端末ソフトウェアでこのコンテナ、ip書き込みホストのip、ポートが10022であることも可能である