Dockerメモ

トップ > Dockerメモ
この記事は古い内容です。最新情報は こちら を参照してください。

環境

Dockerとは

Docker CE をインストールする

CentOS 7
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install -y docker-ce docker-ce-cli containerd.io
# systemctl enable docker
# systemctl start docker
# docker version
# docker info

イメージを管理する

DockerHub からイメージを検索する
# docker search centos

イメージをダウンロードする
# docker pull centos:7

ダウンロード済みのイメージ一覧を表示する
# docker images

イメージを削除する
# docker rmi centos:7

コンテナを管理する

コンテナを起動する
# docker run -d -it --name test1 centos:7

コンテナの一覧を表示する (-a は停止中もすべて)
# docker ps -a

コンテナを開始・停止・再起動・削除・リネームする
# docker start test1
# docker stop test1
# docker restart test1
# docker rm test1
# docker rename test1 test2

コンテナ起動(run)時には下記などのオプションを指定することができます。

オプション説明
-dコンテナのメインプロセスを端末からデタッチします。
-iコンテナの標準入力を開いたままにします。
-t端末を割り当てたままにします。
--name 名前コンテナ名を指定します。
-p hPort:cPortホストOSのポート番号(hPort)を、コンテナ内のポート番号(cPort)にバインドします。(例: -p 8080:80)
-v hVolume:cVolumeホストのボリューム(hVolume)を、コンテナ内のボリューム(cVolume)にバインドします。(例: -v /var/test1/app:/opt/app)
--rmコンテナのメインプロセス終了時にコンテナを自動的に削除します。

コンテナに接続する

centos イメージなど、起動時に -it オプションをつけ、メインプロセスが /bin/bash 等であるコンテナに対しては、メインプロセスに直接アタッチすることができます。この場合、exit や Ctrl-D 等でぬけると、メインプロセス(=コンテナ)自体が終了してしまします。

コンテナのメインプロセスにアタッチする
# docker attach test1
[root@db80ea8860ff /]# Ctrl-P Ctrl-Q   デタッチするには Ctrl-P Ctrl-Q を押す

httpd イメージなど、メインプロセスが httpd 等のコンテナの場合、メインプロセスとは別に、もう一つ別の /bin/bash 等を起動して、それにアタッチすることも可能です。この場合、exit や Ctrl-D で抜けても /bin/bash が終了するのみで、メインプロセス(=コンテナ)は終了しません。

コンテナにもうひとつ別の /bin/bash を起動して接続する
# docker exec -it test1 /bin/bash
[root@db80ea8860ff /]# exit

ホストのディレクトリをマウントする

SELinuxを無効化する
# vi /etc/selinux/config
SELINUX=disabled

# setenforce 0

-vオプションでホストの /mnt/test1 をコンテナの /mnt にマウントする
# docker run -dit -h test1 --name test1 -v /mnt/test1:/mnt centos:centos6

ホストの8080ポートをコンテナの80にマッピングする

# docker run -dit -h test1 --name test1 -p 8080:80 centos:centos6

ループバックデバイスの警告を抑止する

コンテナ起動時に下記の警告が表示される場合は...

Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.

Dockerストレージの起動オプションに下記を加える

# vi /etc/sysconfig/docker-storage
DOCKER_STORAGE_OPTIONS="--storage-opt dm.no_warn_on_loop_devices=true"

# systemctl restart docker

コンテナログイン時にCtrl-Pを二度押さないと効かないのを改善する

Ctrl-P は、コンテナからデタッチする際のキーとして割り当てられているため、ホストOS側でこれを変更します。

# mkdir ~/.docker
# cat > ~/.docker/config.json <<EOF
{
    "detachKeys": "ctrl-\\"
}
EOF

コンテナにログインした際にvimで日本語が文字化けするのを改善する

コンテナ側で環境変数LANGを設定します。

# cat >> ~/.bashrc <<EOF
export LANG=en_US.UTF-8
EOF

リンク


Copyright (C) 2016-2019 杜甫々
初版:2016年6月4日 最終更新:2019年8月18日
http://www.tohoho-web.com/ex/docker.html