English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
dockerの基本概念
Dockerは、開発者がアプリケーションと依存関係をパッケージ化し、移植可能なコンテナに格納し、どのLinuxマシンにも配布できるオープンソースのアプリケーションコンテナエンジンです。
Dockerは、プログラムの開発、テスト、配布、デプロイメントプロセスを再定義したオープンソースのプラットフォームであり、Dockerは「一度構築してどこでも実行」と呼ばれるものです。
イメージを作成
イメージを作成する方法は3種類あります:
既存のコンテナに基づいて作成
ローカルテンプレートに基づいてインポート
dockerfileに基づいて
既存のコンテナに基づいて作成
主に docker commit コマンドを使用し、コマンド形式は:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:tag]] は主に以下を含みます:
-a ,--author="" 著者情報
-m,--message="" 提交メッセージ
-p,--pause=true コンテナの提交時に停止
例えば:
# docker run -it centos /bin/bash [root@d7e7ac1cbca2 /]# touch test [root@d7e7ac1cbca2 /]# ls anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test tmp usr var # docker commit -m "ファイルを追加" -a "kafeikele" de6 centos_copy 5d318afa9e6f7fdb755db97e29e3860b752f24b0b50e6bfa0b7e457450802c0e # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos_copy latest 5d318afa9e6f 13 数秒前 196.7 MB
ローカルテンプレートに基づいてインポート
openVZが提供するテンプレートを使用して作成することをお勧めします
https://openvz.org/ダウンロード/templates/precreated #cat centos-7-x86_64-minimal.tar.gz.crdownload | docker import - centos:latest
イメージの保存とインポート
# docker images centos 7.1.1503 47a77536ad4c 8 週間前 212.1 MB # docker save -o centos_7.1.tar centos:7.1.1503 # docker load --input centos_7.1.tar # docker load < centos_7.1.tar
dockerfileに基づいて
その後の内容は詳細に説明します
最初のdockerコンテナの実行
# docker run centos echo "hello world" ローカルでイメージ 'centos:latest'を見つけることができません latest: centosから引き出し中 47d44cb6f252: ドライブ完了 168a69b62202: ドライブ完了 812e9d9d677f: 引き出し完了 4234bfdd88f8: ドライブ完了 ce20c473cd8a: 引き出し完了 centos:latest: あなたが引き出しているイメージは確認されています。重要:イメージの確認は技術プレビューフィーチャであり、依存すべきではありません セキュリティ。 ダイジェスト: sha256:3aaab9f1297db9b013063c781cfe901e2aa6e7e334c1d1f4df12f25ce356f2e5 Status: centos:latestの新しいイメージをダウンロードしました hello world
コマンド説明:
docker run: 標準のコンテナ起動コマンド
centos: イメージ名、デフォルトはlatest
echoとその後の内容:コンテナが起動した後に実行するコマンド
インタラクティブなコンテナを起動する
docker run -it centos /bin/bash
*注:-tシンボルは、仮想ターミナルまたは端末をコンテナ内に指定する-iシンボルは、コンテナ内のSTDINに対して交互を行うことを許可します
サービス方式でdockerコンテナを起動する
実際にテストをしてみると、最初の「hello world」コンテナがechoコマンドを実行した後で退出し、二つ目のインタラクティブなコンテナが現在のコンテナのbashから退出すると、コンテナも退出します。これはサービスが長時間動作する要求を満たさないため、docker runは「-d'パラメータを使用すると、コンテナをデーモンプロセス方式で起動できます。
docker run -d centos /bin/bash -c "while true; do echo Docker,hello world; sleep 2; <br>179fc7f17c358834364d23112aa26d6a9e1875b2281563720425f62a8f1b5c33
この長い文字列はコンテナIDと呼ばれ、コンテナのユニークな識別子です。したがって、ログを表示したり、コンテナを停止したり、削除したりするなどの操作を行うために使用できます。
dock logs 179fc7f17c358834364d
では、なぜデーモンループを使用するのか?
死のループでない場合、一度出力されると、コンテナ内のプロセスが終了します。コンテナの唯一のプロセスが終了すると、コンテナが停止します。したがって、特定のサービスを実行する場合、そのサービス自体もコンテナ内でデーモンプロセス方式で実行する必要があります。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
主要なオプション:
-d : バックグラウンドでコンテナを実行
-t : 仮想ターミナルを提供
-i : 交互的な入力を提供し、一般的には-tオプションと一緒に使用する場合、ただ-iオプションがある場合、コンテナが起動した後は退出ができません
-v : コンテナにvolumeをマッピングする、例えば: -p /data/www:/var/www/html
-コンテナのポートをホストマシンにマッピングする、例えば: -p 8080:80
さらに多くのコマンド操作
# docker images ローカルのすべてのイメージをリスト # docker search centos デフォルトのイメージリポジトリからイメージを検索 NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos CentOSの公式ビルド。 2767 [OK] ansible/centos7-ansible CentOS上のAnsible7 90 [OK] jdeathe/centos-ssh CentOS-6 6.8 x86_64 / CentOS-7 7.2.1511 x8... 42 [OK] jdeathe/centos-ssh-apache-php CentOS-6 6.8 x86_64 - Apache / PHP / PHP M... 21 [OK] nimmis/java-centos これはCentOSのdockerイメージです 7 with dif... 17 [OK] consol/centos-xfce-vnc Centos コンテナで "headless" VNC セッション... 14 [OK] #docker pull centos イメージをローカルにダウンロード #docker create -it ubuntu:latest コンテナを作成 ローカルでイメージ 'ubuntu:latest'を見つけることができません latest: ubuntuからプル中 58488e45273c: ドライブ完了 25810b66099e: ドライブ完了 6571ba684f54: ドライブ完了 6ed49a73d8f0: ドライブ完了 c53777cbfc31: ドライブ完了 56465e1e45d2: ドライブ完了 ダイジェスト: sha256:312986132029d622ae65423ca25d3a3cf4510de25c47b05b6819d61e2e2b5420 ステータス: ubuntu:latest用の新しいイメージをダウンロードしました 1330233e50aba7fca99e5914bd28dd89321bc86ec35fb36b4775d3424337c190 docker create 命令で作成されたコンテナは停止状態で、docker startを使って起動する必要があります # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1330233e50ab ubuntu:latest "/bin/bash" 約一分鐘前 happy_engelbart docker run コマンドはまずdocker createコマンドを実行し、その後docker startコマンドを実行することに等价です # docker run ubuntu /bin/echo "hello world" hello world
コンテナに入ります
方法一:
# docker attach a54615a88787 コンテナ名またはIDが続きます。退出した後、dockerコンテナも退出します。よく使われない方法です
方法二:
# docker exec -it a54615a88787 /bin/bash はコンテナ名またはIDを指します
方法三:
yum -y install util-linux # docker inspect --format "{{.State.Pid}}" stupefied_cray の最後にコンテナの名前が続きます 4899 # nsenter --target 4899 --mount --uts --ipc --net --pid
スクリプト
#!/bin/bash CNAME=$1 CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME) nsenter --target $CPID --mount --uts --ipc --net –pid
上記は編集者が皆さんに紹介したDockerの基本的なコマンドの詳細です。皆さんの助けになることを願っています。何か疑問があれば、コメントを残してください。編集者はすぐに回答します。また、呐喊チュートリアルサイトのサポートに感謝しています。
声明:この記事の内容はインターネットから収集され、著作権者が所有しています。インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、本サイトは所有権を持ちません。また、人工的な編集は行われていません。著作権に関する問題があれば、notice#wまでメールをお送りください。3codebox.com(メールを送信する際、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認がついたら、本サイトは侵害を疑う内容をすぐに削除します。)