【GCP】Qwiklabs の「Google Cloud の Kubernetes」を勉強しています~Docker の概要~

Docker の概要 GCP
Docker の概要

Qwiklabs の「Google Cloud の Kubernetes」を進めていきたいと思います。

Docker の概要

概要

Docker は、アプリケーションを開発、リリース、実行するためのオープンプラットフォームです。

コマンド

Hello World

docker run hello-world
docker images
docker ps
docker ps -a

ビルド

mkdir test && cd test
cat > Dockerfile <<EOF
FROM node:6
WORKDIR /app
ADD . /app
EXPOSE 80
CMD ["node", "app.js"]
EOF
Dockerfile reference
Find all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, ...
cat > app.js <<EOF
const http = require('http');
const hostname = '0.0.0.0';
const port = 80;
const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});
server.listen(port, hostname, () => {
  console.log('Server running at http://%s:%s/', hostname, port);
});
process.on('SIGINT', function() {
  console.log('Caught interrupt signal and will exit');
  process.exit();
});
EOF
docker build -t node-app:0.1 .
docker images

実行

docker run -p 4000:80 --name my-app node-app:0.1

別のターミナルを開きます。

curl http://localhost:4000

最初のターミナルを閉じます。

docker stop my-app && docker rm my-app
docker run -p 4000:80 --name my-app -d node-app:0.1
docker ps
docker logs <コンテナID>

アプリケーションを修正します。

cd test
sed -i -e 's/Hello World/Welcome to Cloud/' app.js
docker build -t node-app:0.2 .
docker run -p 8080:80 --name my-app-2 -d node-app:0.2
docker ps
curl http://localhost:8080
curl http://localhost:4000

デバッグ

docker logs -f <コンテナID>
docker exec -it <コンテナID> bash
ls
exit
docker exec
docker inspect <コンテナID>
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <コンテナID>
docker inspect

公開

gcloud config list project
export PROJECT=<プロジェクトID>
echo $PROJECT
docker tag node-app:0.2 gcr.io/$PROJECT/node-app:0.2
docker images
docker push gcr.io/$PROJECT/node-app:0.2

ナビゲーションメニュー⇒「Container Registry」をクリックします。

Container Registry
Container Registry

すべてのコンテナを停止して削除します。

docker stop $(docker ps -q)
docker rm $(docker ps -aq)

すべてのイメージを削除します。

docker rmi node-app:0.2 gcr.io/$PROJECT/node-app:0.2 node-app:0.1
docker rmi node:6
docker rmi $(docker images -aq)
docker images

Container Registory から pull して実行します。

docker pull gcr.io/$PROJECT/node-app:0.2
docker run -p 4000:80 -d gcr.io/$PROJECT/node-app:0.2
curl http://localhost:4000

まとめ

Docker のコンテナイメージをビルドし、Container Registory に push した後、pull して実行する方法を学びました。
Docker の基本的なコマンドは覚えられたような気がします。

https://www.papacoder.net/gcp-training-free-campaign/

コメント

タイトルとURLをコピーしました