Dockerコンテナの紹介

Dockerコンテナの紹介

1. 概要

1.1 基本概念:

Docker は、Go 言語をベースにしたオープンソースのアプリケーション コンテナ エンジンであり、Apache 2.0 プロトコルに準拠したオープンソースです。 Docker を使用すると、開発者はアプリケーションと依存パッケージを軽量でポータブルなコンテナーにパッケージ化し、一般的な Linux マシンに公開したり、仮想化を実装したりすることができます。コンテナは完全なサンドボックス メカニズムを使用しており、コンテナ間にインターフェイスはありません (iPhone アプリと同様)。さらに重要なのは、コンテナのパフォーマンス オーバーヘッドが非常に低いことです。

1.2 利点:

簡素化された手順:

Docker を使用すると、開発者はアプリケーションと依存パッケージをポータブル コンテナーにパッケージ化し、それを一般的な Linux マシンに公開して仮想化を実現できます。 Docker は仮想化の方法を変え、開発者が自分の結果を直接 Docker に入れて管理できるようになりました。利便性とスピードはすでに Docker の最大の利点です。以前は数日、あるいは数週間かかっていたタスクも、Docker コンテナを使用すれば数秒で完了できます。

お金を節約:

一方では、クラウド コンピューティング時代の到来により、開発者は成果を追求するために高価なハードウェアを構成する必要がなくなりました。Docker は、高いパフォーマンスには高いコストがかかるという考え方を変えました。 Docker とクラウドを組み合わせることで、クラウドスペースをより有効に活用できるようになります。ハードウェア管理の問題を解決するだけでなく、仮想化の方法も変わります。

1.3 従来のVM機能との比較:

軽量な仮想化方式である Docker は、アプリケーションの実行において従来の仮想マシンに比べて大きな利点があります。

Docker コンテナは非常に高速で、数秒で起動および停止できるため、従来の仮想マシンよりもはるかに高速です。

Docker コンテナはシステム リソースをほとんど必要とせず、ホスト上で数千の Docker コンテナを同時に実行できます。

Docker は Git のような操作を使用して、ユーザーがアプリケーション イメージを簡単に取得、配布、更新できるようにします。手順は簡潔で、学習コストが低くなります。

Docker は、Dockerfile 構成ファイルを通じて柔軟な自動作成およびデプロイメント メカニズムをサポートし、作業効率を向上させます。

Docker コンテナは、その内部でアプリケーションを実行するだけでなく、基本的に追加のシステム リソースを消費しないため、システムのオーバーヘッドを最小限に抑えながらアプリケーションのパフォーマンスが保証されます。

Docker は、厳密で信頼性の高い分離を実現するために、Linux システム上で複数の保護メカニズムを使用します。バージョン 1.3 以降、Docker ではセキュリティ オプションとイメージ署名メカニズムが導入され、Docker の使用時のセキュリティが大幅に向上しました。

特性容器仮想マシン
起動速度分レベル
ハードディスクの使用状況通常MB通常GB
パフォーマンスネイティブに近いネイティブより弱い
システムサポート1台のマシンで数千のコンテナをサポート通常数十の
分離セキュリティ分離完全な孤立

1.4 インフラストラクチャ

Docker はクライアント サーバー (C/S) アーキテクチャ モデルを使用し、リモート API を使用して Docker コンテナーを管理および作成します。

Docker コンテナは Docker イメージから作成されます。

コンテナとイメージの関係は、オブジェクト指向プログラミングにおけるオブジェクトとクラスの関係に似ています。

ドッカーオブジェクト指向
容器物体
親切


1.5 Dockerテクノロジーの基盤:

  • コンテナ分離の基礎となる名前空間は、コンテナAがコンテナBを見ることができないことを保証します。6つの名前空間:User、Mnt、Network、UTS、IPC、Pid
  • cgroup、コンテナ リソースの統計と分離。使用される主な cgroups サブシステム: cpu、blkio、デバイス、フリーザー、メモリ
  • unionfs、典型: aufs/overlayfs、階層化ミラーリングの基礎

1.6 Docker コンポーネント:

  • Docker クライアント --> コンテナの作成、停止、破棄など、Docker サーバー プロセスへの要求を開始します。
  • Docker Server サーバープロセス --> すべての Docker リクエストを処理し、すべてのコンテナを管理します
  • Dockerレジストリイメージウェアハウス -> イメージが保存される中央ウェアハウス。ストレージバイナリscmとみなすことができます。

2. インストールと展開

2.1 前提条件

現在、CentOS はリリースされたカーネルでのみ Docker をサポートしています。

Docker は CentOS 7 上で実行されます。CentOS 7 では、64 ビット システムとカーネル バージョン 3.10 以降が必要です。

Docker は CentOS-6.5 以降のバージョンの CentOS で実行され、システムが 64 ビットであり、システム カーネル バージョンが 2.6.32-431 以上である必要があります。

2.2 Dockerをインストールする

yum install docker -y #systemctl start docker をインストール #systemctl enable docker を起動 #自動起動を設定

2.3 基本コマンド

docker search centos #画像を検索

デフォルトでは、データは海外から取得されるため、非常に遅くなります。daocloud を使用して高速化を設定できます。

 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d6f11267.m.daocloud.io
スクリプトは echo "{\"registry-mirrors\": [\"http://d6f11267.m.daocloud.io\"]}"> /etc/docker/daemon.json に記述されています。
systemctl restart docker #再起動に失敗しました


必要に応じてイメージをプルします。

docker pull docker.io/ansible/centos7-ansible

検索で見つかったすべての画像を取得します。

i を `docker search centos|awk '!/NAME/{print $2}'` で実行します。docker pull $i を実行します。完了です。

ローカルイメージを表示:

Docker イメージ

2.4 コマンドの配置:

コンテナ操作:

docker create # コンテナを作成しますが、起動はしません。docker run # コンテナを作成して起動します。docker stop # コンテナを停止し、SIGTERM シグナルを送信します。
docker start # 停止したコンテナを起動しますdocker restart # コンテナを再起動しますdocker rm # コンテナを削除しますdocker kill # コンテナにシグナルを送信します。デフォルトは SIGKILL です
docker attach # 実行中のコンテナに接続する docker wait # 実行が停止するまでコンテナをブロックする

コンテナ情報を取得します:

docker ps # 起動中のコンテナを表示します docker ps -a # 起動中および終了中のコンテナも含め、すべてのコンテナを表示します
docker examine # コンテナの深部まで移動してコンテナのすべての情報を取得します。 docker logs # コンテナのログを表示します (stdout/stderr)
docker events # docker サーバーのリアルタイムイベントを取得します。 docker port # コンテナのポートマッピングを表示します。 docker top # コンテナのプロセス情報を表示します。 docker diff # コンテナファイルシステムの前後の変更を表示します。

コンテナをエクスポートします。

docker cp # コンテナからファイルまたはディレクトリをコピーします。 docker export # コンテナのファイルシステム全体を、レイヤーやタグなどを除いた tarball としてエクスポートします。

埋め込む:

docker exec # コンテナ内でコマンドを実行します。bashを実行して対話型モードに入ることができます。

ミラー操作:

docker images # すべてのローカルイメージのリストを表示します。 docker import # tarball からイメージを作成します。エクスポートと組み合わせて使用​​されることが多いです。 docker build # Dockerfile を使用してイメージを作成します (推奨)
docker commit # コンテナからイメージを作成するdocker rmi # イメージを削除するdocker load # tarball からイメージを作成し、saved と一緒に使用するdocker save # レイヤーとタグを含む tarball としてイメージを保存するdocker history # イメージを生成したコマンドの履歴を表示するdocker tag # イメージにエイリアスを付ける

レジストリ操作:

docker login # レジストリにログインする
docker search # レジストリからイメージを検索 docker pull # リポジトリからローカルにイメージをダウンロード docker push # レジストリにイメージをプッシュ

2.5 簡単な実用操作

コンテナ操作を実行して入力します。

docker run -i -t docker.io/1832990/centos6.5 /bin/bash

-t は、新しいコンテナ内の疑似端末または端末を指定します。

-i を使用すると、コンテナ (STDIN) と対話できます。

-d はコンテナをバックグラウンドで実行することを意味します。

.bin を実行します。これにより、コンテナ内で bash シェルが起動します。

コンテナが起動すると、コマンド プロンプトが表示されます。


コンテナに MySQL をインストールし、起動時に自動的に起動するように設定し、変更したイメージを送信します。

docker ps -l コンテナIDを照会する
docker commit -m "function" -a "user information" 変更したイメージを送信するためのIDタグ

docker examine ID 詳細情報を表示 docker push ID dockerイメージをアップロード

DockerFileを使用してイメージを作成する

docker build コマンドを使用するには、Docker にイメージのビルド方法を指示する一連の命令を含む Dockerfile ファイルを作成する必要があります。

mkdir DockerFile
cd DockerFile
cat > Dockerfile <<EOF
603dd3515fccより
メンテナー Docker xuel
yum install mysql mysql-server -y を実行します。
mddir /etc/sysconfig/networkを実行します。
/etc/init.d/mysqld startを実行します。
終了

centos6.8 で mysqld を実行します。

-t はリポジトリとタグを指定します

Dockerfileへのパスを指定します

画像は 127 レイヤーを超えることはできないことに注意してください。

さらに、ADD コマンドを使用してローカル ファイルをミラーにコピーすることもできます。

EXPOSE コマンドを使用してポートを外部に開きます。

CMD コマンドを使用して、コンテナの起動後に実行されるプログラムを記述します。

CMD ["/usr/sbin/apachectl", "-D", "フォアグラウンド"]

2.6 Dockerfileの詳細な説明

Dockerfile の命令では大文字と小文字は区別されません。コメントには大文字と # を使用することをお勧めします。各行は 1 つの命令のみをサポートし、各命令は複数のパラメータを持つことができます。

Dockerfile の命令は、その機能に応じて、ビルド命令とセットアップ命令の 2 種類に分けられます。

ビルド手順: イメージをビルドするために使用されます。指定された操作は、イメージを実行しているコンテナーでは実行されません。

設定手順: イメージのプロパティを設定するために使用されます。指定された操作は、イメージを実行しているコンテナーで実行されます。

FROM (ベースイメージを指定)

ビルド命令を指定する必要があり、Dockerfile 内の他の命令の前に配置する必要があります。後続の命令はすべて、この命令で指定されたイメージに依存します。 FROM 命令で指定されるベース イメージは、公式のリモート リポジトリまたはローカル リポジトリに置くことができます。

この命令には 2 つの形式があります。

  • FROM <image> #ベースイメージをイメージの最終変更バージョンとして指定します
  • FROM <image>:<tag> #ベースイメージをイメージのタグバージョンとして指定します。

MAINTAINER(イメージ作成者情報を指定するために使用)

イメージの作成者に関する情報をイメージに書き込むために使用されるビルド手順。イメージに対して docker inspect コマンドを実行すると、この情報を記録するための対応するフィールドが出力に表示されます。

  • メンテナー <名前>

RUN(ソフトウェアのインストール用)

ビルド手順、RUN はベースイメージでサポートされている任意のコマンドを実行できます。 Ubuntu をベースイメージとして選択した場合、ソフトウェア管理セクションでは Ubuntu コマンドのみを使用できます。

  • RUN <コマンド> (コマンドはシェル内で実行されます - `/bin/sh -c`)
  • RUN ["実行可能ファイル", "param1", "param2" ... ] (exec 形式)

CMD (コンテナの起動時に実行する操作を設定する)

コンテナの起動時に指定する操作の指示を設定します。操作は、カスタム スクリプトまたはシステム コマンドを実行することです。このディレクティブはファイル内に 1 つだけ存在できます。複数のディレクティブがある場合は、最後のディレクティブのみが実行されます。

  • CMD ["executable","param1","param2"] (exec と同様、これが推奨される形式です)
  • CMD コマンド param1 param2 (シェルとして)

ENTRYPOINT は、param1 と param2 をパラメータとして実行される実行可能スクリプトまたはプログラムへのパスを指定します。したがって、CMD 命令が上記の形式を使用する場合、Dockerfile 内に一致する ENTRYPOINT が存在する必要があります。 Dockerfile で ENTRYPOINT を指定する場合、次の形式が使用されます。

  • CMD ["param1","param2"] (ENTRYPOINT へのデフォルトパラメータとして)

ENTRYPOINT (コンテナの起動時に実行される操作を設定します)

コンテナ起動時に実行するコマンドを指定するための命令を設定します。複数回設定できますが、最後のものだけが有効になります。

  • ENTRYPOINT ["executable", "param1", "param2"] (exec と同様、推奨形式)
  • ENTRYPOINT コマンド param1 param2 (シェルとして)

この命令を使用する状況は 2 つあります。1 つは単独で使用する場合、もう 1 つは CMD 命令と組み合わせて使用​​する場合です。
単独で使用する場合、CMD コマンドも使用し、CMD が完全な実行可能コマンドである場合、CMD 命令と ENTRYPOINT は互いに上書きされ、最後の CMD または ENTRYPOINT のみが有効になります。

# CMD コマンドは実行されず、ENTRYPOINT コマンドのみが実行されます CMD echo "Hello, World!" 
エントリポイント ls -l

もう 1 つの使い方は、CMD 命令と一緒に使用して、ENTRYPOINT のデフォルト パラメータを指定することです。この場合、CMD 命令は完全な実行コマンドではなく、パラメータ部分のみです。ENTRYPOINT 命令では、JSON を使用して実行コマンドのみを指定できますが、パラメータは指定できません。

Ubuntuから 
コマンド ["-l"] 
エントリポイント ["/usr/bin/ls"]

USER (コンテナのユーザーを設定する)

コンテナを起動するユーザーを設定するための命令を設定します。デフォルトのユーザーは root です。

# memcachedの実行ユーザーを指定する ENTRYPOINT ["memcached"] 
USERデーモン 
または ENTRYPOINT ["memcached", "-u", "daemon"]

EXPOSE (コンテナがホストマシンにマップする必要があるポートを指定します)

コンテナ内のポートをホスト マシン上のポートにマップする命令を設定します。コンテナにアクセスする必要がある場合は、コンテナの IP アドレスの代わりに、ホスト マシンの IP アドレスとマップされたポートを使用できます。全体の操作を完了するには、2 つの手順があります。まず、Dockerfile で EXPOSE を使用してマッピングするコンテナ ポートを設定し、コンテナを実行するときに -p オプションと EXPOSE で設定したポートを指定します。このようにして、EXPOSE で設定したポート番号がホスト マシンのポート番号にランダムにマッピングされます。ホスト マシンにマップする必要があるポートを指定することもできます。この場合、ホスト マシンのポート番号が使用されていないことを確認してください。 EXPOSE 命令では、一度に複数のポート番号を設定できます。コンテナを実行するときに、-p オプションを複数回使用できます。

# ポートをマップする EXPOSE port1 
# コンテナを実行するために使用される対応するコマンド (ホストポート: コンテナポート)
docker run -p port1 イメージ 
 
# 複数のポートをマップする EXPOSE port1 port2 port3 
# コンテナを実行するのに使用される対応するコマンドは docker run -p port1 -p port2 -p port3 image です 
# ホストマシンにマッピングする必要があるポート番号を指定することもできます docker run -p host_port1:port1 -p host_port2:port2 -p host_port3:port3 image

ポートマッピングはDockerの重要な機能です。コンテナを実行するたびにコンテナのIPアドレスを指定できず、ブリッジネットワークカードのアドレス範囲内でランダムに生成されるためです。ホストマシンの IP アドレスは固定です。コンテナのポートをホストマシンのポートにマッピングできるため、コンテナ内のサービスにアクセスするたびにコンテナの IP アドレスを確認する必要がなくなります。実行中のコンテナの場合、docker port とコンテナ内でマップされるポート、およびコンテナ ID を使用して、ホスト マシン上のポート番号のマップされたポートを表示できます。

ENV (環境変数の設定用)

イメージ内の環境変数を設定するためのビルド手順。

  • ENV<キー><値>

設定後は、後続の RUN コマンドが使用可能になります。コンテナの起動後、docker inspect でこの環境変数を表示したり、docker run --env key=value の実行中に環境変数を設定または変更したりできます。

JAVA プログラムをインストールしていて、JAVA_HOME を設定する必要があるときは、Dockerfile に次のように記述します。

  • ENVJAVA_HOME/java/dirent へのパス

ADD (src からコンテナの dest パスにファイルをコピーする)

ビルド手順、コンテナにコピーされたすべてのファイルとフォルダの権限は 0755、uid と gid は 0 です。ディレクトリの場合は、ディレクトリを除くディレクトリ下のすべてのファイルがコンテナに追加されます。ファイルが認識可能な圧縮形式の場合、Docker が解凍を手伝います (圧縮形式に注意してください)。<src> がファイルで、<dest> がスラッシュで終わっていない場合、<dest> はファイルとして扱われ、<src> の内容が <dest> に書き込まれます。<src> がファイルで、<dest> がスラッシュで終わっている場合、<src> ファイルは <dest> ディレクトリにコピーされます。

  • ADD <ソース><宛先>

<src> は、ビルドされるソース ディレクトリへの相対パスです。ファイルまたはディレクトリへのパス、またはリモート ファイル URL にすることができます。
<dest>はコンテナ内の絶対パスです

VOLUME (マウントポイントを指定)

コンテナ内のディレクトリにデータを永続的に格納する機能を持たせるための指示を設定します。ディレクトリはコンテナ自身で使用することも、他のコンテナと共有することもできます。コンテナは AUFS を使用しているため、データを永続化できないことがわかっています。コンテナが閉じられると、すべての変更が失われます。この命令は、コンテナ内のアプリケーションが永続的なデータを必要とする場合に Dockerfile で使用できます。

ベースから 
ボリューム ["/tmp/data"]

WORKDIR (ディレクトリの変更)

RUN、CMD、ENTRYPOINTに有効な、複数回切り替え可能なコマンド(cdコマンドに相当)を設定します。

# /p1/p2 で vim a.txt を実行する 
WORKDIR /p1 WORKDIR p2 実行 vim a.txt

2.7 画像のインポートとエクスポート


イメージをローカルにエクスポートします。


docker save -o centos6.5.tar centos6.5 または docker export f9c99092063c >centos6.5.tar

ローカルからイメージをインポートします:

docker load --input centos6.5.tar または docker load < centos6.5.tar

docker rmは終了したコンテナを削除します。docker -f rmは実行中のコンテナを削除できます。

実行中のバックグラウンド コンテナーを変更します。

docker exec -it コンテナID /bin/bash 


3. 保管

3.1 データディスク

Docker イメージはファイルのレイヤーで構成されており、Docker の一部のストレージ エンジンはこれらのファイルの保存方法を処理できます。

docker examine centos #コンテナの詳細を表示

情報の下にあるレイヤーは Centos ファイルです。これらは読み取り専用で、変更できません。このイメージに基づいて作成するイメージとコンテナーもこれらのファイル レイヤーを共有し、Docker はこれらのレイヤーの上に読み取りおよび書き込み可能なファイル レイヤーを追加します。ファイル レイヤーで何かを変更する必要がある場合、Docker はこの読み取りおよび書き込み可能なファイル レイヤーにコピーをコピーします。コンテナーを削除すると、対応する読み取りおよび書き込み可能なファイル レイヤー内のファイルも削除されます。

Web サーバーのログやデータベース管理システムのデータなど、永久に保存したいデータがある場合は、そのデータをデータ ボリューム ディスクに保存できます。コンテナが削除されても、そのデータは永続的に保持されます。コンテナを作成するときに、データ ディスクを指定できます。実際には、特定のディレクトリを指定することです。

docker run -i -t -v /mnt --name nginx docker.io/nginx /bin/bash

-v: コンテナにマウントするディレクトリを指定します

docker examine container ID を使用して、ホストマシンに対応するマウントされたディレクトリの物理ファイルパスを表示します。

同様に、指定された物理ホストのディレクトリを使用して、コンテナの指定されたディレクトリをマウントすることもできます。

ホスト ディレクトリをコンテナーにマウントします。

次のようにコードをコピーします
docker run -d -p 80:80 --name nginx -v /webdata/wordpress:/usr/share/nginx/html docker.io/sergeyzh/centos6-nginx

-d バックグラウンドで実行

--name 実行中のコンテナに名前を付ける

-v ホストディレクトリ: コンテナディレクトリはコンテナ内のホストディレクトリをマウントします

-p ホスト ポート: コンテナのリスニング ポートは、コンテナ内のアプリケーション リスニング ポートを物理ホスト上の特定のポートにマップします。

複数の物理ディレクトリをマップします: (more -v と記述するだけ)



3.2 データコンテナ:

データ コンテナーを作成できます。つまり、コンテナーを作成するときに、このコンテナーのデータ ディスクを指定して、他のコンテナーがこのコンテナーをデータ ディスクとして使用できるようにします。これは、このデータ コンテナーによってデータ ディスクとして指定されたデータ ディスクを継承することに少し似ています。

まずnewnginxという名前のデータコンテナを作成します

docker create -v /mnt -it --name newnginx docker.io/nginx /bin/bash

このデータコンテナを使用してコンテナnginx1を実行し、データディレクトリ/mntにファイルを作成します。

docker run --volumes-from newnginx --name nginx1 -it docker.io/nginx /bin/bash

データ コンテナを使用して、コンテナ nginx2 を作成します。データ ディレクトリにコンテナ nginx1 によって作成されたファイルがまだ存在することを確認します。同様に、nginx2 の /mnt の下にファイルを作成します。データ コンテナに基づいて実行されている他の新しいコンテナもファイルを参照できます。

3.3 データディスク管理:

コンテナを削除する場合、Docker はデフォルトではそのデータ ディスクを削除しません。

docker volume ls #データディスクを表示docker volume ls -f dangling=true #コンテナで使用されていないデータディスクを表示docker volume rm VOLUME NAME #データディスクを削除


コンテナとそのデータ ディスクを同時に削除する場合は、 -vパラメータを使用できます。

docker rm -v newnginx

4. ネットワーク

Docker は、コンテナが相互に、また外部と通信する方法を決定する複数のネットワークを提供します。

docker network ls #ネットワークを表示する

Docker プロセスが起動すると、ホスト上に docker0 という仮想ブリッジが作成され、このホスト上で起動された Docker コンテナがこの仮想ブリッジに接続されます。仮想ブリッジは物理スイッチと同様に動作し、ホスト上のすべてのコンテナーがスイッチを介してレイヤー 2 ネットワークに接続されます。 docker0 サブネットからコンテナに IP を割り当て、docker0 IP アドレスをコンテナのデフォルト ゲートウェイとして設定します。ホスト上に仮想ネットワーク カード veth ペア デバイスのペアを作成します。Docker は、veth ペア デバイスの一方の端を新しく作成されたコンテナーに配置して eth0 (コンテナーのネットワーク カード) という名前を付け、もう一方の端をホストに配置して vethxxx などの名前を付け、このネットワーク デバイスを docker0 ブリッジに追加します。

4.1 ブリッジネットワーク

コンテナの作成時にネットワークを指定しない限り、コンテナはデフォルトでブリッジ ネットワークを使用します。このネットワークに属するコンテナは相互に通信できますが、外部からこのネットワークのコンテナにアクセスする場合は、ブリッジ ネットワークを使用する必要があります。ブリッジ ネットワークは、ホストとコンテナ間のブリッジのようなもので、コンテナに一定の分離効果をもたらします。実際、ポート転送機能を実現するために、iptables に DNAT ルールが設定されています。 iptables -t nat -vnL を使用して表示できます。

4.2 ホストネットワーク

コンテナを起動するときにホスト モードを使用すると、コンテナは独立したネットワーク名前空間を取得せず、ホストとネットワーク名前空間を共有します。コンテナは独自のネットワーク カードを仮想化したり、独自の IP を構成したりはせず、ホストの IP とポートを使用します。ただし、ファイル システムやプロセス リストなど、コンテナーの他の側面は、ホスト マシンから分離されたままです。このタイプのネットワークのみを使用するコンテナは、ホストのネットワークを使用します。このネットワークは外部に完全に公開されています。ホストにアクセスできる場合は、コンテナにアクセスできます。

4.3 なしモードの使用

Docker コンテナには独自のネットワーク名前空間がありますが、Docker コンテナに対してネットワーク構成は実行されません。つまり、この Docker コンテナには、ネットワーク カード、IP、ルーティングなどの情報が含まれていません。 Docker コンテナのネットワーク カードを追加し、IP を構成する必要があります。このタイプのネットワークを使用するコンテナは完全に分離されます。

4.4 簡単なデモンストレーション:

2つのコンテナを起動し、内部IPアドレスを表示する

次のようにコードをコピーします
for i in `docker ps |grep -v "CONTAINER"|awk '{print $1}'`;do docker examine $i|grep 'IPAddress';done

ホスト内のコンテナとコンテナとホストがブリッジモードで正常に通信できることを確認します。

docker コンテナ ID を検査する

ホストによって作成されたコンテナ内に IP アドレスがないことを確認します。ホスト マシンのアドレスが使用されます。

docker run -d --net ホスト docker.io/sergeyzh/centos6-nginx 



ホストによって作成されたコンテナ内に IP アドレスがないことを確認します。ホスト マシンのアドレスが使用されます。

docker run -d --net none docker.io/sergeyzh/centos6-nginx 


4.5 コンテナポート:

ブリッジ ネットワークに基づいて作成されたコンテナーによって提供されるサービスに外部からアクセスできるようにするには、使用するインターフェースを Docker に伝えます。イメージが使用するポートを確認したい場合は、ExposedPorts を使用するとイメージが使用するポートを確認できます。

docker run -d -p 80 docker.io/sergeyzh/centos6-nginx  
docker ポート 09648b2ff7f6

-pパラメータは、ホスト上の高ポートをコンテナ内の指定されたポートにランダムにマッピングします。


次のようにコードをコピーします
docker run -d -p 80:80 docker.io/sergeyzh/centos6-nginx #ホストのポート80をコンテナのポート80にマッピングします

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerのインストールと簡単な使用方法のチュートリアル
  • Docker コンテナで IPython を使用するための入門ガイド
  • Docker コマンドラインの完全ガイド (知っておくべき 18 のこと)
  • Docker コンテナ入門から夢中になるまで(推奨)
  • Dockerのクイックガイド
  • 2時間のDocker入門チュートリアル
  • Dockerの簡単なインストールと応用入門チュートリアル
  • Dockerの基礎

<<:  Reactフックとzarmコンポーネントライブラリ構成に基づいてh5フォームページを開発するためのサンプルコード

>>:  MYSQL から MARIADB へのプロジェクト移行に関するチュートリアル

推薦する

Linux で txt を mysql にインポートする方法

序文昨日、小さなプロジェクトを書いていたときに、txt ドキュメントのデータを mysql データベ...

MySQL Limitクエリのパフォーマンスを向上させる方法

MySQL データベース操作では、一部のクエリを実行するときにデータベース エンジンが完全なテーブル...

jQueryはアコーディオンの小さなケースを実装します

この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...

@media レスポンシブ CSS を使用してさまざまな画面に適応する例

定義と使用@media クエリを使用すると、さまざまなメディア タイプに異なるスタイルを定義できます...

HTML の水平および垂直中央揃えの問題の概要

最近、センタリングの問題に数多く遭遇したので、後で簡単に見つけられるように、時間をかけてそれらを要約...

MySQL 5.7.17 winx64 のインストールと設定のチュートリアル

今日、MySQL データベースをコンピューターに再度インストールしました。システムを再インストールす...

MySQLデータ損失の原因と解決策

目次序文問題の説明原因分析拡大する総括する序文最近、データの欠落やデータの損失に関するフィードバック...

MySQL のデータ型とスキーマの最適化の詳細な説明

現在、MySQL の最適化について学習しています。この記事では、データ型とスキーマの最適化について紹...

変換を使用して純粋な CSS ポップアップ メニューを実装するためのサンプル コード

序文トップメニューを作成する場合、ポップアップのセカンダリメニューを作成する必要があります。 以前の...

webpackコード断片化の実装

目次背景コモンズチャンクプラグイン分割チャンク構成リソースを非同期に読み込む要約する背景高性能なアプ...

MySQLの結合の基本原理についての簡単な説明

目次結合アルゴリズム駆動テーブルと非駆動テーブルの違い1. 単純なネストループ結合、単純なネスト、イ...

Dockerにおけるコンテナとイメージの違いについてお話ししましょう

鏡とは何ですか?イメージは、複数のイメージ レイヤー (UnionFS および AUFS ファイル ...

Ubuntu 19 以下に Android Studio をインストールするチュートリアル

過去の経験から言うと、タスクを完了した後にメモを取るのは良い習慣です。インストール環境はUbuntu...

MySQL ルートパスワードを変更する複数の方法 (推奨)

方法1: SET PASSWORDコマンドを使用する MySQL -u ルート mysql> ...

HTML+CSSは、要素の位置までスクロールして読み込みアニメーション効果を表示します。

要素までスクロールするたびに読み込みアニメーションを追加するにはどうすればよいですか?初期パラメータ...