LoginSignup
14
7

More than 5 years have passed since last update.

入門Kubernetes の 2 章をそのままやったら、docker build で COPY failed が発生した

Posted at

入門Kubernetes を購入したので、早速手を出してみたら 2 章の途中でこけました。
メモとして残しておきます。

Dockerfile の COPY で指定するディレクトリが違う?

2.2.1 では、 Dockerfile を使い、実際に Docker イメージを作成します。

kuar というサンプルアプリケーションを使うので、

の README を元に、サンプルアプリをビルドし、Dockerfileを作成しました。

$ git clone https://github.com/kubernetes-up-and-running/kuard.git
$ cd kuard
$ make build
Dockerfile
# 参考:kuard の README.md
FROM alpine
COPY bin/1/amd64/kuard /kuard
ENTRYPOINT ["/kuard"]

しかし、入門 kubernetes の Dockerfile は、以下のようになっています。

Dockerfile
# 参考:入門kubernetes 2.2.1
FROM alpine
MAINTAINER kelsey Hightower <kelsey.hightower@kuar.io>
COPY bin/kuard /kuard
ENTRYPOINT ["/kuard"]

あれ? COPY で指定しているディレクトリが違う...

そこで

先ほどの make build によって、kuard 内に作成された、bin ディレクトリの構造を見てみると、

bin
├── 1
│   └── amd64
│       ├── kuard
│       └── linux_amd64
├── 2
│   └── amd64
│       ├── kuard
│       └── linux_amd64
└── 3
    └── amd64
        ├── kuard
        └── linux_amd64

(bin/kuard なんてなかった...)

...

試しに、参考書の Dockerfile (COPY bin/kuard /kuard の方) で、docker build を行うと、

$ docker build -t kuard-amd64:1 .
Sending build context to Docker daemon  64.93MB

...

Step 3/4 : COPY bin/kuard /kuard
COPY failed: stat /var/lib/docker/tmp/docker-builder735597194/bin/kuard: no such file or directory

必要なものが見つからないよと、怒られました。

...

というわけで、Dockerfile を以下のように書き換えました。

FROM alpine
MAINTAINER kelsey Hightower <kelsey.hightower@kuar.io>
COPY bin/1/amd64/kuard /kuard
ENTRYPOINT ["/kuard"]

そして、先ほど同様に docker build -t kuard-amd64:1 を行うと、Successfully built の文字が!
$ docker images で、Docker イメージが作成されたことも確認できました

14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7