Docker--コンテナの適用

5748 ワード

公式サイト:https://www.docker.comDockerウェアハウス:https://hub.docker.com/歴史:米国でPaaSサービスを提供しているdotCloud社は、2013年にコンテナエンジンDockerをオープンし、その後、Docker Incと改名した.利点:1、メインオペレーティングシステムの違いを遮断する;2、1カ所でミラーを作成し、複数カ所で実行する.3、OSミラーより軽量使用シーン:私有化配置
コンセプトLXC:Linux Container、Linuxコンテナ技術Docker Daemon:dockerデーモン、DockerミラーとDockerコンテナLibcontainerを管理するためのコンテナエンジン、Docker Daemonによって呼び出されたDocker倉庫:Dockerミラーを格納する場所Dockerミラー:Dockerコンテナのミラーイメージ、1つのミラーは複数の階層から構成され、1つの汎用階層は複数のミラーで共有することができ、上位ミラーのファイルは、下位ミラーの同じディレクトリの同じ名前のファイルDockerコンテナを上書きします:分離空間で実行されるアプリケーションとその依存性(仮想OSとライブラリを含む)
Dockerコンテナと仮想マシンの比較仮想マシンアーキテクチャ:メインオペレーティングシステム->仮想マシン管理システムHypervisor->オペレーティングシステムから->アプリケーションとその依存Dockerアーキテクチャ:メインオペレーティングシステム->コンテナエンジン->アプリケーションとその依存1、Dockerアーキテクチャより軽量2、Dockerミラーより軽量、移行が簡単
Linuxインストール1、yum install docker 2、Dockerデーモンの起動:service docker start

げんり


コンテナ技術=Cgroup+Namespace+rootfs+コンテナエンジンCgroup:control group(制御グループ)、カーネルが提供する特性は、システムリソースの使用を制限および分離するためのプロセスのセットを提供するNamespace:システムリソースアクセス分離rootfs:ファイルシステム分離コンテナエンジン:ライフサイクル制御

Dockerミラー


ミラーを検索する:docker search mysqlミラーをダウンロードする:docker pull mysqlダウンロードしたミラーを表示する:docker imagesミラーの詳細を表示する:docker inspect mysql削除ミラー:docker rmi mysqlミラーをファイルに保存する:docker save-o mysql.tar mysqlミラーファイルを読み込む:docker load

Docker容器


実行コンテナ内のコマンド:docker run ubuntu/bin/echo'hello world'#コンテナ名の後ろにコンテナ内のコマンド作成コンテナ、指定名:docker run--nameコンテナ名mysql作成コンテナ、保存コンテナ端末開く:docker run-t-i ubuntu/bin/bash#-tはコンテナ端末を開くことを示し、-iは端末入力を保持してコンテナを作成することを示し、バックグラウンド実行コンテナ:docker run-d nginx作成コンテナ、ポートマッピング:docker run-d-pローカルポート:コンテナポートmysqlコンテナ作成、ランダムポートマッピング:docker run-d-P mysqlコンテナ作成、指定データボリューム:docker run-d-v/temp/data mysql#データボリュームコンテナデータ格納場所コンテナ作成、ディレクトリマッピング:docker run-d-vローカルディレクトリ:コンテナディレクトリmysqlコンテナ作成、コンテナ相互接続:docker run-d-P--nameコンテナ2--linkコンテナ1 mysqlコンテナを作成するときに指定したコンテナ名、ポートマッピング、ディレクトリマッピングは変更できません.commitを新しいミラーにしてからrunを再指定できます.
コンテナを終了して停止:exitコンテナを終了しますが停止しません:Ctrl+P+Qバックグラウンドで実行するコンテナに入ります:docker attachコンテナIDバックグラウンドで実行するコンテナに入り、shell:docker exec-tiコンテナID/bin/bashコンテナで実行するコマンド:docker execコンテナID bash-c「cd/mnt&&python/mnt/x.py」
すべてのコンテナを表示:docker ps-a終了状態のコンテナを表示:docker ps-a-qコンテナ出力を表示:docker logsコンテナIDポートマッピングを表示:docker portコンテナIDコンテナポートコンテナ詳細を表示:docker inspectコンテナIDコピーファイル:docker cp index.htmlコンテナID:/usr/nginx/html
終了コンテナ:docker stopコンテナID再起動コンテナ:docker restartコンテナID起動終了状態のコンテナ:docker startコンテナID削除コンテナ:docker rmコンテナID
コンテナのエクスポート:docker exportコンテナID>ubuntu.tarインポートコンテナファイルはミラー:cat ubuntu.tar|docker import-ミラー名:ミラーtagコンテナに基づいてミラーを作成:docker commit-m「コメント情報」-a「作成者」コンテナIDミラー名
既存のネットワークを表示:docker network lsネットワークを作成する:docker network create-d bridge my-bridgeコンテナをネットワークに追加する:docker network connect--aliasコンテナネットワーク内のニックネームmy-bridageコンテナIDコンテナをネットワークから削除する:docker network disconnect my-bridageコンテナIDは一般的にnetworkでコンテナを相互接続し、--linkではなくnetworkでコンテナを相互接続する.コンテナのデフォルトネットワークではなく、新しいネットワークを作成するのが一般的です.デフォルトネットワークではコンテナに--aliasを指定できません.
クリーンアップスペース:docker system prune

ミラーの作成


方式1:Docker公式の基礎鏡像から始め、Dockerfileで一歩一歩鏡像を構築する方式2:まず手動でアプリケーション容器を構築し、容器を鏡像にパッケージしてアップロードする.さらに、このミラーをベースに、Dockerfileでミラーコントラストを変更します.方式2は、自分のアプリケーションミラーをdocker hubに提出する必要があり、秘密保持の問題に関連しています.方式がもっと柔軟になると、Dockerfileを修正すればミラーを変えることができます.方式2はダウンロードするミラーが比較的に大きくて、方式1の中の基礎のミラーの上でインストールするソフトウェア、一回インストールした後にメインオペレーティングシステムの中でキャッシュして、再びインストールしてダウンロードする必要はありません.1、Dockerfileの作成
FROM tomcat                   #    
WORKDIR /usr        #  , cd 
MAINTAINER Hogen [email protected]  #  
ADD ~/ /app  #      
COPY ~/xx.war /usr/local/tomcat/webapps   #  
RUN echo 'Hello world'  #  
CMD echo 'Hello world'  #  ( ) 
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]  #  , , CMD
EXPOSE 80 #  

.dockerignoreファイルには、Dockerfileに無視されるファイル2、構築:docker build-t xx:lastest./#-t指定tag,./現在のディレクトリの下にあるすべてのdockerfile 3を検索し、表示:docker images
一般的なオープンソースDockerfile:https://github.com/dockerfile

ケース:nginx環境のミラーを作成する


ベストプラクティス:1つのシステムの異なるコンポーネントを異なるミラーに配置し、既存のミラーがあれば既存のミラーを使用します.dockerのオペレーティングシステムミラーリングが軽量なため、自分でソフトウェアをインストールするには依存1、docker:yum install docker 2のインストール、docker:service docker start 3の起動、nginxミラーのダウンロード:docker pull nginx 4、新しいフロントエンドコード格納パス:mkdir/usr/myApp 5、起動コンテナ:docker run--name nginx-v/usr/myApp:/usr/share/nginx/html-p 80:80-d nginx 6、フロントエンド構築物を/usr/myApp 7にアップロードし、defaultを取得する.conf(nginx.confで参照):docker cp nginx:/etc/nginx/conf.d/default.conf ./default.conf 8、defaultを修正する.conf 9、defaultをリセットする.conf:docker cp ./default.conf nginx:/etc/nginx/conf.d/10、再起動コンテナ:docker restart nginx

ケース:java環境ミラーの作成


メインオペレーティングシステムでは1、docker:yum install docker 2、起動docker:service docker start 3、インストールcentos:docker pull centos 4、起動コンテナ、java:docker run-tdi--name java centos/usr/sbin/init#と名付けてinit方式で起動し、serviceを使用することができます.-dを持たなければならない.そうしないと詰まる5、容器に入る:docker exec-ti java/bin/bash#init方式で起動した容器、新たにshellを入れなければならない.attach容器の6、JDK:yum install-y java-1.8.0-openjdkメインオペレーティングシステムの7、アップロードプロジェクトで構築したjarパッケージ8、jarパッケージを容器にコピーする:docker cp./app.JAr java:/rootコンテナの9、javaプログラムの起動:java-jar/root/app.jar --spring.profiles.active=docker

ケース:mysqlミラーの作成


メインオペレーティングシステム1、dockerのインストール:yum install dockerまたはapt install docker.io 2、dockerの起動:service docker start 3、mysqlミラーのダウンロード:docker pull mysql 4、mysqlコンテナの作成:docker run--name mysql-p 3306:3306-e MYSQL_ROOT_PASWORD=***-d mysql 5、入庫:docker exec-it mysql/bin/bash容器中6、mysql:mysql-uroot-p 7、倉庫作成:create database myApp;メインオペレーティングシステム8では、初期化sql 9をアップロードする、初期化sqlをコンテナ:docker cp dumpにコピーする.sql mysql:/root容器中10、初期化sql:mysql-u root-p myApp

アリ雲


コンテナサービスContainer Service
弾性容器例ECI
コンテナミラーサービスコンテナミラーサービス:プライベートミラーウェアハウス