Dockerfileからタグをつけてビルドして実行

スポンサーリンク

はじめに

Dockerfileを使って、さくっとタグをつけてビルドして、実行する方法を紹介します。

ビルドも実行も本来色々なオプションがありますが、今回はよく使うパターンとして紹介させていただきます。

Dockerfileからタグをつけてビルド

Dockerfileからタグをつけてビルドするコマンドは下記の通りです。-tオプションでタグを指定します。

docker build -t {image name}:{tag name} {path/to/Dockerfile}

具体例

下記のようなDockerfileを用意します。

FROM nginx:1.23.3

-tでタグを指定してビルドします。Dockerfileのパスは.でカレントディレクトリを指定しています。

docker build -t nginx-image:test-tag .

イメージを確認するとタグ付きで作成されていることが確認できます。

❯ docker image ls | grep nginx-image
nginx-image   test-tag   4193e7f130e5   4 weeks ago   142MB

イメージを実行

バックグラウンドで動かしてポートフォワード

バックグランドで実行して、ポートフォワードするコマンドは下記の通りです。--nameで実行するコンテナ名を指定、-dでバックグラウンドで実行、-pでポートフォワードします。

docker run --name {container name} -d -p {host port}:{container port} {image name}:{tag name}

具体例

先ほどビルドしたイメージを実行してみます。

docker run --name nginx -d -p 8080:80 nginx-image:test-tag

コンテナを確認すると指定した名前で実行されているのがわかります。また、localhost:8080にアクセスするとnginxからレスポンスを受け取ることができます。

❯ docker container ls
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                  NAMES
4ff0019a7dbf   nginx-image:test-tag   "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds   0.0.0.0:8080->80/tcp   nginx

❯ curl localhost:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

シェルに接続する

コンテナをバックグランドで実行するのではなく、実行しつつシェルに接続するコマンドは下記の通りです。シェルに接続するだけでなく、コマンドを実行することも可能です。

docker run -it {image name}:{tag name} {command}

具体例

同じイメージを実行して、bashに接続してみると、コンテナ上で色々コマンドを試せるようになります。

❯ docker run -it nginx-image:test-tag bash

root@ad5c1ea85e7a:/# ls
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

参考

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