Docker の使用方法
1. docker ps で実行中のコンテナを表示します。
2. docker image で docker イメージを表示します。
3. docker rm id (コンテナID) コンテナを削除します(コンテナIDはdocker psで確認できます。削除するにはコンテナを停止する必要があります)
3.1 すべてのコンテナを削除 docker rm `docker ps -a -q`
4 . docker stop id (container id) コンテナの実行を停止します
## 5. docker rmi id (mirror id) イメージを削除します## 6. docker pull ubuntu:16.04 (ミラー名:バージョン番号) イメージをダウンロードします
7. docker run -it ubuntu:16.04 コンテナを作成して実行しますcontainer
-tは疑似端末、または新規で端末を指定することを意味しますコンテナ
# -iは、コンテナ内で(stdin)との対話を許可することを意味します# -pは、マップされたポートを指定します
# -d コンテナをバックグラウンドで実行し、コンテナID 7.1 docker run -dit ubuntu:16.04 バックグラウンドでコンテナを作成して実行します 7.2 docker run -ditp 8080:8080 (ホストポート:コンテナポート) ubuntu:16.04 を作成して実行します。バックグラウンドでコンテナを実行し、コンテナのポートをマッピングします# 8. dockerattach id (コンテナID) 実行中のコンテナ環境に入ります
# 9. コンテナを終了します# 9.1 exit コンテナを直接終了し、実行中のコンテナを終了します
9.2 [ctrl p] [ctrl q ] (ショートカットキー) コンテナを終了しますが、実行中のコンテナは終了しません
10. docker commit -m'バージョン識別' id (コンテナー ID) ubuntu:16.04 (イメージとバージョン番号) イメージを送信してイメージを生成します ( このコマンドを使用して、ビルドされたコンテナーを新しいイメージにパッケージ化するか、元のイメージ (つまり、元のイメージの内容を変更します。生成されたイメージの名前がバージョン番号と同じ場合、生成されたイメージ名は直接上書きできます))
感想ログ ファイルをローテーションするには、最初に名前を変更する必要があります。その後、usr1 シグナルがマスター プロセスに送信されます。マスター プロセスは、現在開いているすべてのログ ファイルを再度開き、ワーカー プロセスが実行されている非特権ユーザーを所有者として割り当てます。再オープンに成功すると、マスター プロセスは開いているすべてのファイルを閉じ、ワーカー プロセスにメッセージを送信して、ファイルを再オープンするように要求します。ワーカー プロセスは、新しいファイルを開いたり、古いファイルをすぐに閉じたりすることもあります。その結果、古いファイルはほとんど保存されません。名前•次に、usr1 シグナルを nginx マスター プロセスに送信します• nginx マスター プロセスは、シグナルを受信した後にいくつかの処理を実行し、ワーカー プロセスに再度開くように要求します。ログ ファイル
•ワーカー プロセスは新しいログ ファイルを開き、古いログ ファイルを閉じます#実際、実際に行う必要がある作業は最初の 2 点だけです。
Docker がシステムにインストールされていると仮定して、ここでは nginx コンテナーを直接実行します。
$ docker run -d \ -p 80:80 \ -v $(pwd)/logs/nginx:/var/log/nginx \ --restart=always \ --name=mynginx \ nginx:1.11.3
#!/bin/bash for ((i=1;i<=100000;i++)) do curl http://localhost > /dev/null sleep 1 done
次の内容を含むrotatelog.sh ファイルを作成します。
#!/bin/bash getdatestring() { tz='asia/chongqing' date "+%y%m%d%h%m" } datestring=$(getdatestring) mv /var/log/nginx/access.log /var/log/nginx/access.${datestring}.log mv /var/log/nginx/error.log /var/log/nginx/error.${datestring}.log kill -usr1 `cat /var/run/nginx.pid`
getdatestring 関数は、現在の時刻を取得し、次のような文字列としてフォーマットします。 「201807241310」、作成者は日付と時刻をファイル名に付けることを好みます。ここでは、tz='asia/chongqing' によってタイム ゾーンが指定されていることに注意してください。デフォルトの形式は UTC 時間であり、これを使用するのは奇妙であるためです (リアルタイムで 8 時間を補う必要があります)。次の 2 つの mv コマンドは、ログ ファイルの名前を変更するために使用されます。最後に、kill コマンドを使用して usr1 シグナルを nginx マスター プロセスに送信します。
次のコマンドを使用して、rotatelog.sh ファイルに実行可能アクセス許可を追加し、それを $(pwd)/logs/nginx ディレクトリにコピーします。
$ chmod +x rotatelog.sh $ sudo cp rotatelog.sh $(pwd)/logs/nginx
ローリング操作を定期的に実行します
$ docker exec mynginx bash /var/log/nginx/rotatelog.sh
上記のコマンドを 1 回実行すると、スケジュールどおりに新しいログ ファイルのバッチが生成されます。
次に、スケジュールされたタスクでこのコマンドを構成し、1 時に実行します。毎朝1回。 crontab -e コマンドを実行し、ファイルの末尾に次の行を追加します。
* 1 * * * docker exec mynginx bash /var/log/nginx/rotatelog.sh###保存して終了。次の図は、作成者のテスト プロセス中に 5 分ごとにスクロールした場合の効果です。
$ dockercontainer kill mynginx -s usr
• usr1 を送信します。コンテナ内のプロセスNo.1への信号
以上がDockerでnginxログファイルをスクロールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。