Dockerの一般的なコマンドとヒントのまとめ

Dockerの一般的なコマンドとヒントのまとめ

インストールスクリプト

Ubuntu / CentOS

Debian のインストールに問題があるようで、インストール ソースの問題を解決する必要があります。

カール -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun / AzureChinaCloud

AWSやGCPなど海外のクラウドサーバーベンダーを利用している場合は、--mirrorを追加する必要はありません。

Centosの実行が終了した後も、手動でsudo systemctl start docker.serviceを実行する必要があります。そうしないと、dockerが起動していないなどのエラーが表示されます。

ログ関連

文字列のGrep

正しい方法: docker logs nginx 2>&1 | grep "127."

たとえば、Jupyter Notebook のトークンを表示するには、 docker logs notebook 2>&1 | grep "token"

サポートされているその他のパラメータ

-f : tail -f コマンドと同様

--since: 2013-01-02T13:23:37 などの特定のタイムスタンプから開始します。相対時間もサポートされています (例: 42m)。

--until : 上記と同様ですが、逆になります。

-t, --timestamp : タイムスタンプを表示

--tail N (デフォルトはすべて) : データの最後の数行を表示する

マウント手法<br /> たとえば、Grafana などでは、Docker イメージに組み込まれたファイルがいくつかあります。対応するディレクトリを直接マウントし、ホストディレクトリが空の場合、docker内部

ディレクトリは上書きされます。この状況にどう対処すればいいのでしょうか?

単純で大雑把な方法 1: (アイデアのみ)

一度実行し、docker cpコマンドを使用してコピーします。

次に、Docker コンテナを削除し、ファイルを対応するディレクトリにコピーしてマウントします。

よりエレガントな方法 2:

ClickHouseの起動を例に挙げましょう

# ステップ 1.1: docker ボリュームを作成する (目的: CH サーバーの構成を公開する)
docker ボリューム作成 --driver ローカル \
--opt タイプ=なし \
--opt デバイス = /home/centos/workspace/clickhouse/configs \
--opt o=バインド\
ch-サーバー構成

# ステップ 1.2: ボリュームを作成し、データベースデータをマウントします docker volume create --driver local \
--opt タイプ=なし \
--opt デバイス = /home/centos/workspace/clickhouse/data \
--opt o=バインド\
ch-サーバーデータ

# ステップ 2: 起動 (注意: 保存されているデータが多い場合、2 回目の起動では初期化に時間がかかります。初期化が完了する前に接続しようとすると失敗します。)
sudo docker run -d --name mkt-ch-server \
-v ch-server-configs:/etc/clickhouse-server \
-v ch-server-data:/var/lib/clickhouse \
--常に再起動\
-p 9000:9000 -p 8123:8123 \
--ulimit nofile=262144:262144 yandex/clickhouse-server

この方法では、Docker イメージに付属する構成ファイルは、初めてマウントされたときにクリアされません。

スケジュールされたタスク

たとえば、MySQL ではデータのバックアップを定期的にエクスポートする必要があります。この操作は、ホスト マシン上で crond を使用して実行するのが最適です。

0 1 * * * docker exec mysqldump xxxx

一般的な Docker イメージとそのインストール コマンド

マイグレーション

インストール

docker run --name some-mysql --restart always\
-v /my/own/datadir:/var/lib/mysql\
-e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:タグ

データをダンプする

方法1: ローカルにmysql dockerコンテナが既にある

次のコマンドはdocker内のmysql用ですが、パラメータdump remote mysqlを直接指定することもできます。

docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /path-to-data/all-databases.sql

方法2: ローカルにmysql dockerコンテナがない

# 使用後は削除し、コマンドラインプロンプトにパスワードを入力します docker run -i --rm mysql:5.7 mysqldump --all-databases\
-h 172.17.0.1 -uroot -p | gzip -9 > /home/centos/workspace/mysql-data/backup.sql.gz

エディターの都合により、上記>は正しく表示されません

データの復元

上記のダンプ方法を参照しますが、コマンドラインツールはmysqlに変更されます

Python プロキシ

少し這ってみる必要があるでしょう。クラウド サーバーの IP を最大限に活用して、クローラー プロキシとして機能します。クローラー プロキシを構築する最も簡単な方法は現在次のとおりです。

docker run --name py-proxy -d --restart always -p 8899:8899 abhinavsingh/proxy.py

知らせ:

  1. 現時点では、この Docker イメージの Python スクリプトはまだ比較的古く、Basic 認証をサポートしていません。Basic 認証が必要な場合は、Python ファイルを自分で更新し、Docker ビルドを再構築する必要があります。 Github アドレス: https://github.com/abhinavsingh/proxy.py
  2. 実際の運用では、使いすぎると自動的に接続が確立できない状況が発生するようです。対象のWebサイトに問題がある可能性もあります。
  3. この物はブラウザ SwitchSharp のプロキシとしても使えますが、https + 基本認証を追加することを推奨します。具体的な操作については公式ドキュメントを参照してください。

ジュピターノートブック

しばらく使ってみて、Tensorflow イメージに付属している Notebook の方がシンプルだと感じました。 ホストディレクトリをマウントするときに、奇妙な権限の問題が起こらないためです。 bash スクリプトは次のとおりです。

sudo docker run --name ノートブック -d --restart 常に \
 -p 127.0.0.1:8888:8888 \
 -v /ワークスペースへのパス/notebooks:/tf \
 テンソルフロー/テンソルフロー:最新-py3-jupyter

Apache Sparkなどをリンクする必要がある場合は、次のスクリプトを参照してください

sudo docker run --name pyspark-notebook -d \
 --net ホスト --pid ホスト -e TINI_SUBREAPER=true -p 8888:8888 \
 -v /ワークスペースへのパス/notebooks:/tf \
 テンソルフロー/テンソルフロー:最新-py3-jupyter

グラファナ

ID=$(id -u)
 
docker 実行 \
 -d --常に再起動する\
 -p 3000:3000 \
 --name=グラファナ \ 
 --user $ID -v /path-to-data/grafana-data:/var/lib/grafana \
 -e "GF_INSTALL_PLUGINS=grafana-clock-panel、grafana-simple-json-datasource" \
 -e "GF_SECURITY_ADMIN_PASSWORD=aaabbbccc" \
 グラファナ/グラファナ

簡単に説明します:

  • –user $ID を設定する必要があります。そうしないと、Docker 内で権限の問題が発生します。
  • GF_INSTALL_PLUGINS: 組み込みでないプラグインをインストールする
  • GF_SECURITY_ADMIN_PASSWORD: アカウント: admin / aaabbbccc

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • Docker共通コマンドの詳しい解説 Study03
  • 一般的な docker コマンドの概要 (推奨)
  • Docker共通コマンド操作方法
  • 一般的な Docker コマンドの概要: インストール、ミラーリング、基本的なコンテナ操作
  • docker タイムゾーンの変更と一般的な docker コマンドの詳細な説明
  • 一般的なDockerコマンドの概要

<<:  Vue は better-scroll を使用して水平スクロール方法の例を実現します

>>:  Mysqlは実行中のトランザクションを照会し、ロックを待機する方法

推薦する

CSS を使用して親コンテナ div を img 画像で埋め、コンテナのサイズを調整する方法

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

同じページを動的にロードするための Vue ルーティングリスニングの例

目次シナリオ分析発達要約するシナリオ分析システムでは、1 つのモジュールに 3 つのサブモジュールが...

Linux系でよく使われる運用・保守コマンド(まとめ)

目次1. システム監視2. ファイル操作3. ネットワーク通信4. システム管理仕事で必要なLinu...

背景のグラデーションと自動フルスクリーンを実現するCSSコード

背景グラデーションと自動フルスクリーンに関する CSS の問題編集長は CSS の開発中に致命的な問...

HTML のスクロールバーについて/スクロールバーの削除

1. xhtmlの下のスクロールバーの色元の HTML では、ページ全体のスクロール バーを次のよう...

ウェブサイトにダークモード切り替え機能を持たせるための純粋なCSSフリー実装コード

序文ダーク モードの概念は、 MacOS系統のMojaveに由来し、ユーザーが選択できる 2 つのス...

MySQL データ挿入最適化メソッドconcurrent_insert

スレッドがテーブルに対して DELAYED ステートメントを実行するときに、そのようなハンドラーが存...

Vue データ内のプロパティをランダムに変更すると、ビューは更新されますか?

インタビュアー: Vue のソースコードを読んだことはありますか?応募者:あります。インタビュアー:...

MySQLクエリ条件のnot inとinの違いと理由

まずSQLを書く SELECT DISTINCT from_id タラから cod.from_id ...

最もよく使われるHTMLエスケープシーケンス

HTML では、<、>、& などは特別な意味を持ち (<、> はリン...

CSS floatプロパティの詳細な説明

1. フローティングとは何ですか?フローティングは、その名の通り、浮遊することを意味します。要素がド...

mysql-8.0.11-winx64.zip の詳細なインストール チュートリアル

zip インストール パッケージをダウンロードします。 MySQL8.0 For Windows z...

jsシミュレーションでJingdongの詳細ページで画像を拡大する効果を実現

この記事では、Jingdongの詳細ページの画像の拡大を実現するためのjsの具体的なコードを紹介しま...

MySQL Limitクエリのパフォーマンスを向上させる方法

MySQL データベース操作では、一部のクエリを実行するときにデータベース エンジンが完全なテーブル...

Dockerがコンテナサービスを停止または削除できない問題の解決策

序文今日、開発者から、コンテナ サービスを停止、rm (docker rm -f)、または強制終了で...