Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
~18m
すべてがオペレーティングシステム上に直接あるべきというわけではありません。 SQL Serverのようなツールはリソースを大量に消費し、それらをおおっぴらに実行するということは、必要ない時でもリソースが消費されることを意味します。 コンテナはこの問題を解決します: 必要なときに立ち上げ、必要ないときには停止させます。 Dockerはこのワークフローを動かすエンジンであり、Portainerは管理可能にするためにCLIコマンドライブラリを暗記しなくても、軽量なGUIを提供します。
Tim CoreyのLinux開発シリーズに基づいたこの内訳では、Ubuntu上での完全なセットアップ、aptリポジトリの登録、エンジンのセットアップ、個人用マシンでのsudo要件の削除、Portainer CEを永続化するコンテナとしてデプロイするまでの詳細を示します。
[3:10 - 6:00] aptを使ってDocker自体をインストールする前に、Dockerのパッケージソースを登録し、システムに信頼の理由を与える必要があります。 Dockerはこれを1回の貼り付けで処理する単一のコピー可能なコマンドブロックを提供しています。 docs.docker.comにアクセスし、インストールセクションに進んでからUbuntuを選択してください。 "aptリポジトリを使用してインストール"セクションのコマンドが必要です。
そのブロックは、必要な証明書ツールをインストールし、Dockerの公式GPGキーをダウンロードし、その権限を調整し、aptソースリストにリポジトリアドレスを書き込むという一連の操作を実行します。ドキュメントからコピーしてCtrl+Shift+Vで端末に貼り付けて、ブロック全体を一度に実行します。
強調すべき重要な点: 新しいパッケージソースを盲目的に追加しないでください。 その証明書をインストールする前に、そのソースを信頼できることを確認してください。 Dockerは信頼性があり、信頼に値しますが、その原則は追加するすべてのソースにも当てはまります。 このアプローチは実際には、多くのパッケージマネージャーがデフォルトで行うものよりも厳密であり、それは特徴であり、複雑さではありません。
[6:00 - 7:10] リポジトリが登録されている場合、Dockerのインストールは単一のaptコマンドで行います:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
プロンプトが表示されたら確認し、aptはダウンロードとインストールを処理します。 Dockerは起動時に自動的に開始するように設定されているので、追加の手順なしで再起動後にバックグラウンドで実行されます。
すべてが正常に動作することを確認するには、hello-worldコンテナを実行してみてください:
sudo docker run hello-world
Dockerはイメージをダウンロードし、それを実行し、確認メッセージを出力します。 その出力はインストールが正常に動作していることを意味します。 hello-worldコンテナは一度だけ実行され、終了するように設計されています。 これはエンジンが応答していることを確認するためだけに存在します。
[7:45 - 10:30] 標準では、Dockerのコマンドはsudoを必要とします。なぜなら、コンテナの管理は特権操作だからです。 共有サーバーまたはプロダクションマシンでは、この設定をそのままにしておきましょう。 個人用開発マシンを単独で管理する場合、dockerグループに自分を追加すると、プレフィックスを省略できます:
sudo usermod -aG docker $USER
-aGは現在のアカウントを追加します。 大文字小文字は区別されます:$USERは大文字でなければなりません。 変更はログアウトして再ログインするまで有効になりません; グループメンバーシップが正しく適用されるには、単純なログアウトよりもフルシステムの再起動の方が信頼性があります。 これが成功すると、sudoなしで動作します。
これは利便性のトレードオフであり、セキュリティの改善ではありません。 開発用マシンにのみ保持してください。
[11:30 - 12:45] Portainerを起動する前に、ボリュームを作成して、そのデータをコンテナの再起動や交換を超えて持続させます:
docker volume create portainer_data
コンテナは本質的に一時的であり、1つを破壊するとその中に保存されているものはすべて消去されます。 ボリュームはコンテナのライフサイクルの外に存在し、Dockerによって管理されるパスにありますので、Portainerの設定はそれを破壊して再構築しても保持されます。
[12:45 - 14:10] Portainer CE自体もDockerコンテナです。 完全な実行コマンドは以下の通りです:
docker run -d -p 9000:9000 --name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce
分解すると:-dはコンテナをデタッチしてバックグラウンドで実行され続けます。 -p 9000:9000はホストポート9000を公開し、コンテナ内の一致する内部アドレスにルーティングします。 最初の-vはDockerソケットをマウントし、Portainerに他のコンテナやイメージの可視性と制御を与えます。 この方法でソケットを接続することは、GUIがDocker環境全体を読み取り管理できる理由です。 2番目の/dataにリンクし、その状態を保持します。
portainer/portainer-ce(コミュニティエディション)からプルします。 portainer.ioウェブサイトは有料のEnterprise版をリードしていますが、CEは無料で完全にローカルや個人用として使用可能です。
[14:10 - 17:30] コンテナが開始されたら、ブラウザを開いてhttp://localhost:9000にアクセスしてください。 Portainerは初回アクセス時に管理者パスワードの作成を促します; それは12文字以上である必要があります。 ログイン後、追加の環境を追加せずにクイックセットアップウィザードをクリックし、ダッシュボードからローカル環境を選択します。
ホームビューは要約を示します: ダウンロードされたイメージ、存在するコンテナ、設定されたネットワーク、および使用中のボリュームです。 各セクションをクリックすることで、完全な制御を得られます。 Imagesの下には、セットアップ中に行った2つのパルのhello-worldとPortainer CEイメージが表示されます。Containersでは、hello-worldの実行の両方が停止状態で表示され、Portainer自体はアクティブに実行されています。
コンテナパネルからどのエントリを開始、停止、または削除することができます。 コンテナを選択してログをクリックすることによって、その出力を表示します。 hello-worldのエントリは、実行された2回の通常の挨拶テキストを表示します。 コンテナを再起動し、そのログを確認することで、新しい出力が最初の下に追加されることを確認します。
ボリュームはマウントパスとともにリストされています。 /var/lib/docker/volumes/下の位置が表示されます。
[17:30 - 18:10] Docker DesktopはGUIと一緒に出荷されますが、大きなオーバーヘッドが伴います。これは実際の作業負荷をシステムリソースで利用したいLinux開発マシンで問題となります。 Portainer CEはコンテナ自体として実行され、はるかに少ないメモリとCPUを消費します。 それは、イメージとコンテナの閲覧、ログの読み取り、ボリュームの管理、サービスの開始と停止など、実用的なニーズをカバーし、重さを伴いません。
[17:50 - 18:30] DockerとPortainerが揃ったら、次のステップはコンテナとしてSQL Serverを実行することです。 単一のdocker runコマンドでイメージをプルし、インスタンスを開始します。 Portainerコンテナパネルから、セッションの終了時にそれを停止し、再び必要なときに再起動することができます。 このパターンはRedisや連続して実行するには高価であるが、コンテナ化するには容易なその他のインフラツールにも同様に適用されます。
[18:30 - end] まとめ:DockerのaptリポジトリをそのGPGキーで登録し、localhost:9000によって、日常のコンテナ管理作業をLinux上のコンテナでGUIでカバーし、ルーチン作業のためCLIに触れる必要がありません。
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy