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」をクリックします。
すべてのコンテナを停止して削除します。
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 の基本的なコマンドは覚えられたような気がします。
コメント