This page looks best with JavaScript enabled

[レポート] はじめてでもわかる!コンテナ入門 - 社内研修公開しちゃいます -

 ·  ☕ 3 min read  ·  ✍️ Inomaso

2020年12月1日のはじめてでもわかる!コンテナ入門 - 社内研修公開しちゃいます -にオンライン参加しました。GMOテクノロジーブートキャンプという新卒向けの研修プログラムを再編集した内容であり、DockerやKubernetesをこれから触ってみたいという方には良いセッションだったと思います。

セッション内容


インフラ基礎・コンテナ入門をテーマに、実際にGMOインターネットで行っている講義を公開しちゃいます!

動画


https://www.youtube.com/watch?v=_TKdXlWIlSI

講義資料


ハンズオン資料


Dockerのハンズオンでハマったところ


Dockerの削除はコマンドが用意されておらず脳死でコマンドを実行していたら、DockerHubからNginx公開後に、Dockerfileのデプロイしたらエラーでこけました。

1
2
% docker run -p 8080:8080 --name 2020-12-Introduction-to-containers webweb:v1
docker: Error response from daemon: driver failed programming external connectivity on endpoint 2020-12-Introduction-to-containers (8e3853473efed9e774c4659b3f967443f85b5da258f1cf5968cde7961184c5cb): Bind for 0.0.0.0:8080 failed: port is already allocated.

8080ポートはNginxのコンテナが使用しているので、該当コンテナを停止することにしました。

1
2
3
4
5
% docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
1d6439b07598        nginx:latest        "/docker-entrypoint.…"   6 minutes ago       Up 5 minutes        0.0.0.0:8080->80/tcp   nginx-latest
% docker stop 1d6439b07598
1d6439b07598

再実行したら今度はコンテナ名でコンフリクトしたので、一旦Dockerfileからデプロイしたコンテナを削除後に、ビルドからやり直したらうまくいきました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
% docker run -p 8080:8080 --name 2020-12-Introduction-to-containers webweb:v1
docker: Error response from daemon: Conflict. The container name "/2020-12-Introduction-to-containers" is already in use by container "0d8693a28c58f69107aaadaf3e3e027feb2c3e804baaf80f5f3b8314a1af912e". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
% docker rm 2020-12-Introduction-to-containers
2020-12-Introduction-to-containers
% docker build -t webweb:v1 .
Sending build context to Docker daemon  3.072kB
Step 1/9 : FROM golang:latest AS builder
 ---> 6d8772fbd285
Step 2/9 : WORKDIR /work
 ---> Using cache
 ---> bb961c0180d4
Step 3/9 : COPY main.go .
package main
 ---> Using cache
 ---> 837cf2c9437d
Step 4/9 : RUN go build -o web .
 ---> Using cache
 ---> 1c90f7764a7b
Step 5/9 : FROM golang:latest
 ---> 6d8772fbd285
Step 6/9 : WORKDIR /exec
 ---> Using cache
 ---> f6d69a80cc3e
Step 7/9 : COPY --from=builder /work/web .
 ---> Using cache
 ---> 0c95b5df16f2
Step 8/9 : EXPOSE 8080
 ---> Using cache
 ---> 0c1185f068e2
Step 9/9 : CMD ["./web"]
 ---> Using cache
 ---> bac3a6d96867
Successfully built bac3a6d96867
Successfully tagged webweb:v1
% docker run -p 8080:8080 --name 2020-12-Introduction-to-containers webweb:v1

Kubernetesのハンズオンでハマったところ


Manifestによるデプロイでyamlファイルがないと怒られました。
単純にローカルでyamlファイルを作成していないのが原因だったので、Githubから該当ファイルをコピーして再実行しました。

1
2
% kubectl apply -f deployment.yaml --kubeconfig=kubeconfig.yaml
error: the path "deployment.yaml" does not exist

kindクラスタの削除


個人環境でkindは使用していないので、手っ取り早く全てのクラスタを削除することにしました。

1
2
% kind delete clusters --all
Deleted clusters: ["introduction-to-containers"]

まとめ


DockerやKubernetesの基礎部分の要点を凝縮した講義資料とハンズオンでした。
特に講義資料は実践的な内容となっていたため、後ほど読み返そうと思います。

Share on

comments powered by Disqus