技術ドッカーコンテナ(下)

技術ドッカーコンテナ(下)

A、Dockerfile基本的なコマンド

1.1.FROM - 参照ミラーに基づきます
  • CentOSの#メイク参照画像から(CentOSのに基づいて)
  • 最初から#は任意の参照ミラーベースの画像に依存しません

  • TomcatのFROM:9.022-jdk8、OpenJDKの
  • 公式のベースイメージを使用してみてください

1.2.LABEL&MAINTAINER - 記述情報
  • MAINTAINER xxx.com
  • LABELバージョン= "1.0"
  • LABELの説明=「xxxはどのような役割」
1.3.WORKDIR - 作業ディレクトリを設定します
  • WORKDIRは/ usr / local
  • WORKDIRは/ usr / local / newdirが#が自動的に作成します
  • 絶対パスを使用してみてください
1.4.ADD&COPY - ファイルをコピーします
  • ルートパスにコピーされたハローADD / #fを
  • ADDのtest.tar.gz /#rootディレクトリやエキスを追加
  • wgetのと同様のコピーに加えてADD、だけでなく、リモートファイルの追加機能を持って、+のウェブサイト、
1.5.ENV - 一定の環境を設定します
  • ENV JAVA_HOMEを/ usr / local / openjdk8
  • RUN $ {JAVA_HOME} / binに/ javaの-jar test.jar
  • 保守手順を向上させることができ、環境定数を使用してみてください

二、Dockerfile実行命令

RUN&CMD&ENTRYPOINT
  • RUN:シェルの実装の同等の実装にビルドにビルド
  • ENTRYPOINT:コンテナの実装を開始
  • CMD:CMDは、コンテナが[「PS」、「EF」]を開始した後に実行幹部の実装に相当します
実装
RUN yum install -y vim #shell命令格式
RUN ["yum","install","-y","vim"] #Exec命令格式

なぜ我々はそれを実行するには、2つの異なる方法を提供する必要がありますか?

  • シェルの実行

使用するシェルは、現在のシェルは親プロセスで、実行子プロセスを生成します

サブシェルスクリプトで実行されるスクリプトは、現在のシェルに戻って、サブシェルを終了し、終了します

  • execの実行

現在のプロセスの実行

リアル
FROM centos
RUN ["echo","image building!!!"]//执行在子进程了
CMD ["echo","container starting..."]//只有这句能看到的

注:増加し、CMDコマンドを交換する場合はCMD、CMDコマンドが実行されないことがあり

ENTRYPOINTが実行されます

第三に、Redisの構成された画像

  • Redisのは、NoSQLのデータベースです
  • 2010年3月15日スタート、Redisの開発は、VMWareの議長を務めます

ライティングDockerfile

FROM centos
RUN ["yum","install","-y","gcc","gcc-c++","net-tools","make"]
WORKDIR /usr/local
ADD redis-4.0.14.tar.gz .   //会自动解压
WORKDIR /usr/local/redis-4.0.14/src
RUN make && make install
WORKDIR /usr/local/redis-4.0.14
ADD redis-7000.conf .
EXPOSE 7000 //暴露7000端口
CMD ["redis-server","redis-7000.conf"]

ライン上でミラーリングされた建物を実行した後

docker build -t xxx/docker-redis:1.0 .
docker run -p 7000:7000 xxx/docker-redis:1.0

、ちょうど書き込み、実用的な作業についてはこちらをDockerfile Redisの直接使用することができミラーリング

第四に、コンテナのリンク間の片方向通信

  • コンテナが作成された後、仮想IPがあります

コンテナウェイアクセス

原理:仮想IP、コンテナは通信しますが、我々は、メッセージングのための容器の使用をIP通信を使用していません

私たちは、名前を指定するために使用--name

docker run -d --name web tomcat
docker run -d --name database -it centos /bin/bash

仮想IPを見ます

docker inspect [containerID]

私たちは、PINGを使用します

ping 172.17.0.3 是可以ping通的
但是我们ping名称是ping不通的

私たちは二Tomcatを作成するように、データベースにリンクされているとき

docker run --name web --link database tomcat

この我々はTomcatを入力して、時間、およびその後のping、できる自然ユニコム

ping database 可以自动ping通

五、双方向通信に基づく橋橋

橋双方向通信理論

実行します。バインドとデータベースのTomcat

docker run -d --name web tomcat
docker run -d --name database centos /bin/bash
docker network ls
docker network create -d bridge my-bridge
docker network connect my-bridge web
docker network connect my-bridge database

6月と共有データコンテナボリューム

未使用のボリューム・コンテナ

ボリュームコンテナ原理

方法:

1.ホストディレクトリを提供することにより-vマウント

  • フォーマット:
  • ドッキングウィンドウの実行--nameコンテナ-vホスト名パス:容器内のパスは、ミラー名をマウント
  • 例:
  • ドッキングウィンドウの実行--name T1 -vは/ usr / webappsに:は/ usr / local / tomcatに/ webappsにtomcatに

2.によって共有コンテナ

  • フォーマット:
  • ドッキングウィンドウ作成--name Webページ-v / webappsに:真/ tomcatに/ webappsにtomcatに/ binに/
  • シェア容器は、マウントポイント
  • ドッキングウィンドウの実行--volumes-からWebページ--name T1 -dのTomcat

七、ドッカー作曲

我々はドッカーコンから出てきたように、マルチ容器の展開は、多くの問題が発生します

image-20191204010016822

ケース

  • ドッカー作曲単一のマルチコンテナの配備ツール
  • YMLファイルを定義することで、マルチ船を展開する方法
  • WIN / MACがデフォルトドッカー作曲で提供、Linuxがインストールする必要があります

インストール手順:

1.は、自動的にインストール取得します

pip install -U docker-compose==1.23.2

許可を実行2.

sudo chmod +x /usr/local/bin/docker-compose

ワードプレスをインストールします。

ディレクトリのワードプレスを作成します。1.

mkdir wordpress

2.vimドッキングウィンドウ-compose.yml

复制官网上的

プロジェクトを3.build

docker-compose up -d

八、Docker-compose应用实战

案例、两个SpringBoot项目构建docker-compose

SpringBoot打包

文件 applicaion-dev.yml application.yml bsbdj.jar

vim Dockerfile

FROM openjdk:8u222-jre
WORKDIR /usr/local/bsbdj   //上述肯定没有这个目录,所以会创建
ADD bdbdj.jar    //加入jar
ADD application.yml .
ADD application-dev.yml .
EXPOSE 80        //暴露端口80
CMD ["java","-jar","bsbdj.jar"] 

docker build -t msb.com/bsbdj-app .
docker run msb.com/bsbdj-app

数据库打包

vim Dockerfile

FROM mysql:5.7
WORKDIR /docker-entrypoint-initdb.d
ADD init-db.sql .

docker build -t msb.com/bsbdj-db .
docker run -e -d MYSQL_ROOT_PASSWORD=root msb.com/bsbdj-db

docker exec -it aae73fa77d75 /bin/bash

Docker-Compose进行关联和发布

vim docker-compose.yml

version: '3.3'
services: 
    db:
        build: ./bsbdj-db/
        restart: always  //容错,自动重启
        environment:
            MYSQL_ROOT_PASSWORD: root
    app:
        build: ./bsbdj-app/
        depends_on:
            - db
        ports:
            - "80:80"
        restart: always
        
        
docker-compose up
docker-compose up -d 
docker-compose logs
docker-compose down

我们连接数据库,那么yml中jdbc:mysql://db:3306/xxx即可

おすすめ

転載: www.cnblogs.com/littlepage/p/11980562.html