docker网络&& docker compose

docker网络&& docker compose

1つは、コンテナの相互接続

(1)コンテナ相互接続を実現するポートマッピング

  • ポートマッピングメカニズムは、コンテナ内のサービスを外部ネットワークアクセスに昇格させます
  • ランダムまたは指定されたマッピングポート範囲

docker run -d -P httpd:centos  ##  -P 是随机分配端口

docker run -d -p 49888:80 httpd:centos   ##-p  是指定端口映射

(2)コンテナ相互接続を実現するネットワーク通信トンネル

コンテナの相互接続

  • ソースコンテナーとシンクコンテナーの間にネットワーク通信トンネルを確立する
  • docker runコマンドの--linkオプションを使用して、コンテナー間の相互接続と通信を実現する

コンテナ相互接続を実現


docker run -d -P --name web1 httpd:centos
docker run -d -P --name web2 --link web1:web1 httpd:centos

docker exec -it web2 /bin/bash

ping web1

(3)同じdockerブリッジを指定してコンテナの相互接続を実装する


//新建docker网卡
docker network create --subnet=172.19.0.0/24 mynetwork   ##mynetwork 是docker网络名字

//基于同一张docker 网卡新建一个容器test22
docker run -itd --name test22 --network mynetwork centos:7 /bin/bash

 //基于同一张docker 网卡新建一个容器test33
docker run -itd --name test33 --network mynetwork centos:7 /bin/bash 

//进入容器test33
docker exec -it test33 /bin/bash

//ping test22通
[root@52c6aa6a2235 /]# ping test22 
PING test22 (172.19.0.2) 56(84) bytes of data.
64 bytes from test22.mynetwork (172.19.0.2): icmp_seq=1 ttl=64 time=0.082 ms
64 bytes from test22.mynetwork (172.19.0.2): icmp_seq=2 ttl=64 time=0.096 ms
--- test22 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.082/0.089/0.096/0.007 ms


Dockerネットワークの2つ、4つのモード

  • Dockerをインストールすると、ブリッジ(作成されたコンテナーはデフォルトでこのネットワークに接続されます)、なし、ホストの3つのネットワークが自動的に作成されます
  • ホスト:コンテナーは、独自のネットワークカードを仮想化したり、独自のIPを構成したりするのではなく、ホストのIPとポートを使用します。
  • コンテナ:作成されたコンテナは、独自のネットワークカードを作成して独自のIPを構成するのではなく、指定されたコンテナとIPおよびポート範囲を共有します。
  • なし:このモードは、コンテナーのネットワーク機能をオフにします。
  • ブリッジ:このモードでは、コンテナーごとにIPを割り当てて設定し、コンテナーをdocker0仮想ブリッジに接続し、docker0ブリッジとiptablesNATテーブル構成を介してホストと通信します。

上記はすべて手作業なしでセットアップされ、実際に構成する必要があるのはカスタムネットワークです。

(1)橋


docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:7 /bin/bash

(发现是失败的,因为使用bridge无法支持指定ip——需要自定义ip然后指定ip)

(2)カスタムネットワーク固定IP


docker network create --subnet=172.19.0.0/24 mynetwork

docker run -itd --name test44 --net mynetwork --ip 172.19.0.20 centos:7 /bin/bash

  • カスタムネットワークmynetworkを表示

docker network ls

[root@localhost opt] docker network ls
NETWORK ID          NAME                    DRIVER              SCOPE
d88329f07179        bridge                  bridge              local
a58999c6c705        compose_nginx_cluster   bridge              local
1236c91097a9        host                    host                local
34801c075b17        mynetwork               bridge              local
a79f44bb5700        none                    null                local

  • Dockerコンテナーtest44を表示

docker ps -a
[root@localhost opt] docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS                      PORTS                                         NAMES
fe58a4a7528c        centos:7              "/bin/bash"         14 seconds ago      Up 13 seconds                                                             test44

  • Dockerネットワークを削除

docker network rm NETWORK ID   (网络ID)docker network ls

docker network rm 后面输入要删除的network id

注:ネットワークカードで特定のコンテナが実行されている場合、カスタムDockerを削除するには、ネットワークを停止または削除する必要があります-ネットワーク

3、docker構成オーケストレーション

(1)作成とは何ですか?

Docker Composeの前身はFig。です。これは、複数のコンテナを定義して実行するためのツールです。DockerComposeでは
、シェルスクリプトを使用してコンテナを起動する必要がなくなりました
。DockerComposeでは、YMLファイルを使用して、アプリケーションで必要なすべてのサービスを構成できます。

  • Docker Composeは、複数のコンテナーを組み合わせて開発するシナリオに非常に適しています

YAMLは、マークアップ言語を備えた非常に直感的なデータシリアル化形式であり、データ構造、さまざまな構成ファイル、ファイルアウトラインなどを表現または編集するのに非常に適しています。例:多くの電子メールヘッダー形式はYAMLに非常に似ています

  • ファイル形式と書き込みノート

1.タブキーのインデントはサポートされていません。スペースインデントが必要です。インデントを使用して階層関係を示します
。2。通常、インデントの開始は2スペースです。同じレベルの要素が左に揃っている限り、インデントされたスペースの数は重要ではありません。かもしれ
3は、そのようなコロン、カンマ、クロスバーとして1つのスペース文字、インデント
#(注)使用して4、
5を、単一引用符で特殊文字ならば
6、ブール値は引用符で囲む必要があります

  • Docker Composeファイル構造の例:docker-compose.yml

    1.上部のボックスにバージョン番号とサービスIDを作成する必要があります

    2.属性名と属性値は次のように区切られます:(コロンとスペース)

    3. 2つのスペースを使用してレベルを示します

    4.サービス属性は-(space space-space)で表されます

(2)Docker Compose構成の共通フィールド

一般的なフィールドには、上記のymlファイル形式でいくつかの説明があります。以下は詳細な説明です。

ここに画像の説明を挿入

  • Docker Composeでよく使用されるコマンド

基本的なコマンド形式:docker-compose [オプション] [コマンド] [パラメーター]

ここに画像の説明を挿入

ここに画像の説明を挿入
Docker Composeの使用に関する詳細な説明:使用手順、環境の準備、詳細な形式

  • 作成で使用される3つのステップ

1. Dockerfileを使用してアプリケーション環境を定義します

2. docker-compose.ymlを使用して、アプリケーションを構成するサービスを定義し、分離された環境で一緒に実行できるようにします。

3.最後にdocker-compose upコマンドを実行して、アプリケーション全体を起動および実行します

4、Nginxコンテナのワンクリックデプロイメントとオペレーションを構成する

  • Docker作成環境の準備
将docker-compose文件拖至opt中,
cp -p docker-compose /usr/local/bin/

chmod +x /usr/local/bin/dockers-compose

mkdir /root/compose_nginx
cd /root/compose_nginx
mkdir wwwroot
cd wwwroot
vim index.html
<h1>this is compose</h1>
mkdir nginx
cd nginx

vim Dockerfile
FROM centos:7
MAINTAINER this is nginx
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++  pcre  make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.2
RUN ./configure  --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin/nginx:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >>/usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
~  
   

vim run.sh 

#!/bin/bash
/usr/local/nginx/sbin/nginx

  • docker-comppose.ymlを設定する
cd /root/compose_nginx

[root@localhost compose_nginx]# vim docker-comppose.yml 

version: '3'
services:    ##services 是定义下面的服务
  nginx:
    hostname: nginx   ##主机名
    build:          ##创建Nginx镜像
      context: ./nginx   ##切换到镜像目录
      dockerfile: Dockerfile   ##执行Dockerfile
    ports:  #开放端口
     - 1216:80
     - 1217:443
    networks:
     - cluster
    volumes:
     - ./wwwroot:/usr/local/nginx/html    ##宿主机站点目录挂载到Nginx容器中
networks:    ##网络部分:指定上面用到的网络
  cluster:       
[root@localhost compose_nginx]# tree
.
├── docker-comppose.yml
├── nginx
│   ├── Dockerfile
│   ├── nginx-1.12.2.tar.gz
│   └── run.sh
└── wwwroot
    └── index.html

2 directories, 5 files


将Nginx安装包拖至/root/compose_nginx/nginx
  • docker-comppose.ymlを使用してワンクリックでNginxをデプロイする

docker-compose -f docker-comppose.yml up -d   //up 是指开启,-d 后台运行,守护进程  -f 使用docker-compose.yml

  • 画像を表示compose_nginx_nginxとコンテナ
[root@localhost compose_nginx]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
compose_nginx_nginx   latest              baaf5c9230ec        20 minutes ago      480MB

[root@localhost compose_nginx]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
144bbbf52901        compose_nginx_nginx   "/run.sh"           20 minutes ago      Up 20 minutes       0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

  • 検証
  • 実機ブラウザアクセス

192.168.75.200:1216

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_42099301/article/details/108747832