English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Dockerの基本的なコマンドの詳細

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(メールを送信する際、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認がついたら、本サイトは侵害を疑う内容をすぐに削除します。)

基本チュートリアル
お気に入り