Docker

Docker

CentOS7で実施

■Dockerインストール

```
wget -qO- https://get.docker.com/ | sh
rpm -q docker-ce
```

■dockerサービスの起動

```
systemctl start docker
```

■dockerサービスの有効化

```
systemctl enable docker
```

■user01をdockerグループに所属させ、docker管理コマンドを実行できるようにする

```
usermod -G docker user01
```

■user01でログイン

■DockerHubにあるイメージのサーチ

```
docker search centos
```

DockerレジストリからDockerイメージをダウンロードする

docker pull {イメージ名} : {タグ名}

例）
	docker pull centos:latest
	docker pull centos:centos6
	docker pull ubuntu

ダウンロードしたDockerイメージの一覧を確認する
	docker images

■ローカルのイメージコンテナ一覧表示

```
docker image ls
```

■DockerHubにあるイメージをDockerホストにダウンロード

```
docker image pull centos:7
```

■確認

```
docker image ls
```

■DockerHubにあるイメージubuntuのlatestタグの付いたイメージをダウンロード

```
docker image pull ubuntu:latest
```

■Dockerコンテナを作成・実行

書式
docker run [オプション][--name {コンテナ名}] {イメージ名}[:{タグ名}][コンテナで実行するコマンド][引数]

主なオプション
　　-d : バックグラウンドで実行する（後述）。既定では、コンテナーをフォアグラウンドで実行するため、
		Webサーバーやアプリケーションサーバーなど常時実行するコンテナーで指定。
　　-i : コンテナーの標準入力を開く。/bin/bashなどでコンテナーを操作する際に指定する。
　　-t : tty（端末デバイス）を確保する。/bin/bashなどでコンテナーを操作する際に指定。
　　-p : ｛ホストのポート番号｝:｛コンテナーのポート番号｝：Dockerサーバーのホストと
		ポートマッピングを構成
例）
	docker run -i -t centos
	exit

	docker run -i -t ubuntu
	apt-get update

	OSのバージョン確認
	cat /etc/lsb-release

確認
	docker ps


①Dockerコンテナ操作
ダウンロードしたDockerホストにあるcentosイメージからDockerコンテナを作成

```
docker container run centos:7 echo "hoge hoge"
```

■Dockerコンテナの一覧を取得する
docker ps [-a]
-a : 停止中のコンテナも表示されます。

②Dockerコンテナ操作　動作中のコンテナがないことを確認

```
docker container ls
```

③作成したコンテナが自動停止されていることを確認
docker container ls -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                      PORTS               NAMES
e72f15246a5e        centos:7            "echo 'hoge hoge'"   19 seconds ago      Exited (0) 18 seconds ago                       adoring_driscoll

■Dockerコンテナの起動
	docker start { コンテナ名 | コンテナID }

④docker container runコマンドを実施し、ダウンロードしたDockerホストにあるcentosイメージを使用してDockerコンテナを作成
-itオプションとbashコマンドを実施して、コンテナの作成と同時にシェルを起動し、コンテナ内のシェルを使い、コマンド実行できるようにする

```
docker container run -it centos:7 bash

[root@97f5cba069e6 /]#

ps -elf
exit

docker container ls -a
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS                        PORTS               NAMES
97f5cba069e6        centos:7            "bash"               About a minute ago   Exited (127) 12 seconds ago                       lucid_fermat
e72f15246a5e        centos:7            "echo 'hoge hoge'"   11 minutes ago       Exited (0) 11 minutes ago                         adoring_driscoll
```


■デタッチモードでDockerコンテナの起動

```
docker container run -d centos:7 ping -c 50 127.0.0.1
docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2b1803680bff        centos:7            "ping -c 50 127.0.0.1"   20 seconds ago      Up 19 seconds                           peaceful_dubinsky
```

■実行結果を確認　引数のCONTAINER IDは一部でよい

```
docker logs 2b1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.040 ms
```

■Dockerコンテナへの接続
	docker attach {コンテナ名 | コンテナID }

■Dockerコンテナの端末からデタッチとアタッチ
①bashを起動したdockerコンテナに接続し、コンテナの端末に接続

```
docker container run -it centos:7 bash
```

②Dockerコンテナの端末からデタッチ
ctrl+p  ctrl+q (ctrlキーは押したまま)

③デタッチしたDockerコンテナの端末にアタッチ

```
 docker container attach 24e
[root@24e504ac64fc /]#
```

④exitでコンテナのシェルを終了。コンテナは自動停止される

```
[root@24e504ac64fc /]# exit
exit
[user01@localhost ~]$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
```