proxy環境下でCentOS7にdockerを構築するときのメモ

仕事でproxy環境下にdocker,docker-compose環境を構築することがあったのでその時のメモです。環境はCentOS7を使ってます。

OSインストール直後のまっさらな状態から始めます

## CentOSのプロキシの設定

[ここ](https://qiita.com/hirohiro77/items/cdf6d8baa619c0e0e82d)を参考に以下を設定

```
$ vi /etc/profile
```

以下を最下行に書き込む

``` /etc/profile
PROXY="http://<user>:<pass>@<proxy_host>:<proxy_port>" # proxyサーバのドメインとポートを指定
export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
export NO_PROXY=localhost
export no_proxy=localhost
```

```
# source /etc/profile 
```

とりあえずyum updateしてproxyが通るかどうか確かめる

```
# yum update
```

## dockerのインストール

公式サイトを見て、その手順に従う

<https://docs.docker.com/install/linux/docker-ce/centos/>

以下を順に実行

```
# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
```

```
# 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 docker-ce
```

インストールされたかどうか確認

```
$ docker -v
Docker version 17.12.1-ce, build 7390fc6
```

### dockerのプロキシ設定

[ここ](https://qiita.com/jeffi7/items/3e40c59744b5801fd40a)を参考に設定

```
# mkdir /etc/systemd/system/docker.service.d
# vim /etc/systemd/system/docker.service.d/http-proxy.conf
```

以下を追記する

``` /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://<user>:<pass>@<proxy_host>:<proxy_port>" "HTTPS_PROXY=http://<user>:<pass>@<proxy_host>:<proxy_port>" "NO_PROXY=localhost"
```

以下を実行して適用

```
$ systemctl daemon-reload
$ systemctl restart docker
```

### insecure resistryの設定

Dockerで社内のプライベートリポジトリを使う場合、そのリポジトリが暗号化されていないhttp通信の場合は、insecure registyにそのリポジトリを登録しないと、コンテナイメージをpullすることができないので、[公式サイト](https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry)を参考に以下を設定する


```
# vim /etc/docker/daemon.json
```

以下を追記

``` /etc/docker/daemon.json
{
  "insecure-registries" : ["<private_docker_registry_host>:<port>"]
}
```


以下を実行して適用

```
$ service docker restart
```

### dockerの自動起動設定

CentOS7の場合はsystemctlでデーモンをコントロールしているので、以下を実行すると、システム起動時に自動的にDockerが立ち上がるようになる

[参考](https://netmark.jp/2014/12/kubernetes-init-files.html)

```
systemctl enable docker.service
```

## docker-composeのインストール

公式サイトの手順に従ってインストールする <https://docs.docker.com/compose/install/#install-compose>

以下を順に実行

curlのプロキシ設定。[参考](http://namihira.hatenablog.com/entry/2013/12/29/170839)

```
$ vim ~/.curlrc
```

以下を追記

``` ~/.curlrc
proxy-user = "<user>:<pass>"
proxy = "http://<proxy_host>:<proxy_port>"
```

docker-composeの実行ファイルをインストール。

バージョンは[ここ](https://github.com/docker/compose/releases)から最新のものに書き換えること

```
sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
```

```
sudo chmod +x /usr/local/bin/docker-compose
```

ちゃんとインストールされたか確認

```
$ docker-compose --version
docker-compose version 1.19.0, build 9e633ef
```

## docker swarm modeの起動

docker swarmを使う場合は、以下を実行してswarm modeをonにする。（今回はシングルホスト環境でswarmを動かす）

```
# docker swarm init
```

以上