# Docker command でドッカー練習する時のメモ

windows home に docker いれて docker 人生始まります。🎉

# コンテナ操作

# コンテナの生成と起動(run)

docker run -it --name="コンテナ名" コンテナイメージ名 実行したいコマンド(任意)
docker run --privileged -d -i -t -v //path -p 8000:80 -p 8001:3060

Option

  • -i コンテナの標準入出力を有効にする
  • -t 擬似ターミナルを有効にする(tty の確保)
  • --name コンテナに好きな名前をつける
  • -d バックグラウンドで実行するオプション(docker run -d httpd)
  • -p ホストポート:コンテナポート (docker run -p 8000:80 httpd)
  • --expose=ポート番号 指定したコンテナポートを解放
  • --add-host=ホスト名:IP アドレス コンテナの hosts ファイルにホスト名と IP アドレスを設定
  • --hostname=ホスト名 コンテナ自身のホスト名を指定
  • --net=host コンテナがホスト OS のネットワークを使う。この設定によりホスト OS に接続できる端末はコンテナにもアクセスできるようになる。
  • -v ホストとコンテナのディレクトリを共有(docker run -v ホストのディレクトリ:コンテナのディレクトリ イメージ名)

# コンテナ状況確認(top)

docker top コンテナID・コンテナ名

# コンテナ名変更(rename)

docker rename 現在コンテナ名 新しいコンテナ名

# コンテナ差分確認(diff)

コンテナ生成されたときと現在の差分表示

docker diff コンテナID・コンテナ名

# コンテナをイメージとして保存(commit)

docker commit コンテナID・コンテナ名 イメージ名:タグ

# コンテナ確認(ps)

稼働中・停止中コンテナ確認

# 稼働中のコンテナ一覧
docker ps

docker container ls

# 稼働中・停止中すべてのコンテナ一覧
docker ps -a

docker container ls -a

# コンテナIDのみ表示
docker ps -aq

# コンテナ削除(rm・prune)

削除・削除後の確認・一括削除

# rm削除 複数対応
docker rm ID1 ID2

# コンテナ削除確認
docker ps -a

# 停止中コンテナ一括削除 (コンテナをプルーンする)
docker container prune

# イメージ操作

# イメージ一覧表示(images)

docker images

# イメージ作成(build)

docker build -t test ./(Dockerfileが存在するディレクトリ)

# イメージ取得(pull)

docker pull イメージ名

# イメージ削除(rm)

docker image 削除・一括削除

# ID指定で削除
docker rmi -f ID

# あまり使わないけど、一括削除できる
docker rmi `docker images -a -q`

# エラー処理

windows10 Home 64bit に Docker Toolbox 入れて Docker 使っています。原因不明に以下のエラーが出たり出なかったりします。

Error response from daemon: cgroups: cannot find cgroup mount destination: unknown.

# Docker error

$ docker run -d --privileged -p 8880:80 --name web centos /sbin/init
bacf6a06e97c57203c5a039bd0d7b04ac44cd27e1d09f9f3b14723c379295f5d
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: cgroups: cannot find cgroup mount destination: unknown.

# Docker version

Version: 19.03.1

$ docker version
Client:
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.7
 Git commit:        74b1e89e8a
 Built:             Wed Jul 31 15:18:18 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.1
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.5
  Git commit:       74b1e89e8a
  Built:            Thu Jul 25 21:27:55 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

# 原因

cgroups: cannot find cgroup mount destination

"cannot find cgroup mount destination"が原因?

# 対処方法

グーグル先生は以下の対処があるって。

# unix の場合はこれ

確認してないけど、何人「いいね」押してあるから、使えそう

sudo mkdir /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd

参考: docker: Error response from daemon: cgroups: cannot found cgroup mount destination: unknown. #1301 (opens new window)

# windows10 はちょっと面倒

まず、docker-machine に ssh でログインする

$ docker-machine ssh default
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

↑ これってログインできた感じ?
Core is distributed with ABSOLUTELY NO WARRANTYコアは完全に無保証で配布されます
の意味みたい

docker@default:~$ mkdir /sys/fs/cgroup/systemd
docker@default:~$ sudo mkdir /sys/fs/cgroup/systemd
docker@default:~$ sudo mount -t cgroup -o none,name=sytemd cgroup /sys/fs/cgroup/systemd
docker@default:~$ exit
$ docker-machine restart

Restarting "default"...
(default) Check network to re-create if needed...
(default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar.
(default) Waiting for an IP...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

これで、エラー解消しました!

後から気づいたけど、docker-machine restart だけでも、エラー解消できるみたい

2019-08-19
  • docker
  • server

関連記事

Laravel Address already in use の原因
AWS EC2 の amazon-linux-extras の話
AWS CloudWatch ログ監視で Lambda 処理
デプロイツール Capistrano
Amazon DynamoDB 制限調査
AWS 504 Gateway Timeout エラー対応
AWS Elastic Beanstalk php.ini 設定変更
AWS Elastic Beanstalk 環境設定
Elastic Beanstalk \$\SERVER['REMOTEADDR'] 取得できない
AWS Unresolved resource dependencies [AWSEBV2LoadBalancer] エラー
Shell と Bash のいろいろ
AWS SES メール開封確認  DB に集計
crontab 設定いろいろ
Centos7 Webserver 構築の時のメモ
DDNS 無料ダイナミック DNS サービス 4 つ
content-security-policy 設定
ディスク容量を確認する df コマンド
Docker compose で LAMP 環境作成
Windows の WSL Ubuntu で Docker を使う方法
Homebrew で Docker Desktop を再インストールエラー
AWS のタイムゾーンを UTC 協定世界時から JST 日本標準時に変更
Docker Supervisor 使ってバッチ処理
Windows10 Home に Docker 入れた時のメモ
Docker Compose
Docker port error で起動できない
Docker の基本的な使い方
ジェネレーティブ AI と大規模言語モデル(LLM)を学ぶためのリソース
Windows Mac Linux hosts ファイル場所
VPS サーバーのセキュリティー fail2ban
Docker WSL2 Laravel sail
メールサーバー移行と POP & IMAP 設定
Nginx web サーバーのセキュリティ
自宅サーバー構築!  Nextcloud で NAS クラウドストレージ
robots.txt の書き方
Nginx 基本設定
SPF メール送信なりすまし対策
積水ハウス 個人情報流出 SQL インジェクション攻撃か
5 分で VPN サーバー立てる! wg-easy の使い方
xserver に nodejs インストール
よく使う WSL コマンド
Vim 操作とショートカット
解決! xserver php バージョンアップした時に ssh 環境に反映されない
XZ Utils 事件対応
xserver に vim インストール
Ubuntu で Web サーバーを構築する手順
Mac ターミナル SSH 接続設定
レンタルサーバーなら xserver おすすめ理由
ZeroSSL で無料 SSL できるけど Let's Encrypt と比較
oh my zsh 使うべし
youtube 見れるように vpn サーバー建ててみた
no such file or directory: /usr/share/zsh/vendor-completions/_docker