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
# 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 は、コンテナからデタッチする際のキーとして割り当てられているため、ホストOS側でこれを変更します。
# mkdir ~/.docker # cat > ~/.docker/config.json <<EOF { "detachKeys": "ctrl-\\" } EOF
コンテナ側で環境変数LANGを設定します。
# cat >> ~/.bashrc <<EOF export LANG=en_US.UTF-8 EOF