0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerの仕組み

Last updated at Posted at 2023-08-23

Abstract

Dockerの仕組みの理解、Docker特有の問題に対する解決の助けになるような箇条書き的な情報、ケーススタディなどを記す.

この記事は技術初心者向けである.

この記事はDockerの成り立ちを体系的に記したものではない.

Dockerのコンテナではlocalectlは使えない

  • localectlは、「systemd」というものによって起動されたシステムでのみ使えるコマンドである -> 参考文献
  • そして、Dockerではsystemdは使えない->参考文献1,参考文献2
  • よって、Dockerでlocalectlは使えない
  • しかし、特別なbuild方法を指定することでdockerコンテナでもsystemdを使う方法がある(上の参考文献1,2を参照)
  • systemdについての記事-> https://qiita.com/bluesDD/items/eaf14408d635ffd55a18

DockerのvolumeはホストOS上にはない(Linux以外の場合)

参考文献 1
参考文献 2

  • 使用するPC(ホストOS)がLinuxの場合、問題はない. しかし、PCがWindowsとMacの場合、上の問題が発生する.
  • 一言で言うと、そもそもDockerというソフトはLinux上でしか動くことが出来ない不思議なソフトウェアである
  • そのためWindowsやMacで使用するにはまずLinux仮想マシンを設置する必要がある。そのLinux仮想マシンの作成はWindowsやMacにDockerをインストールしたときに、インストーラーが裏で自動的にやってくれる。
  • 従って、dockerの操作は、あたかもMacのターミナルやwindowsのコマンドプロンプトでやってるように見えるが、実はそれは見せかけで、Macのターミナルに打ち込まれたdockerコマンドは一度Linux仮想マシンに渡されて、それをdockerに渡している。
  • 従って、dockerコマンドで作成したボリュームも例に漏れず、Linux仮想マシンのディレクトリに保存される。作成したボリュームの表示ディレクトリはホストOSのディレクトリとは全く関係ない
  • ホストOSからvolumeにアクセスしたければ、Macの場合は以下のコマンドを実行すればよい:
nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock 
  • Windowsの場合は、エクスプローラーの窓に \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes と入力するとアクセスできる(参考文献)

Dockerのコンテナ内のcentosでlocalectlコマンドは実行不可能

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?