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

2023.02.13
2024.03.24
Docker
Dockerfile

はじめに

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

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

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

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

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

具体例

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

1FROM nginx:1.23.3

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

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

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

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

イメージを実行

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

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

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

具体例

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

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

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

1docker container ls
2CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                  NAMES
34ff0019a7dbf   nginx-image:test-tag   "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds   0.0.0.0:8080->80/tcp   nginx
4
5curl localhost:8080
6<!DOCTYPE html>
7<html>
8<head>
9<title>Welcome to nginx!</title>
10<style>
11html { color-scheme: light dark; }
12body { width: 35em; margin: 0 auto;
13font-family: Tahoma, Verdana, Arial, sans-serif; }
14</style>
15</head>
16<body>
17<h1>Welcome to nginx!</h1>
18<p>If you see this page, the nginx web server is successfully installed and
19working. Further configuration is required.</p>
20
21<p>For online documentation and support please refer to
22<a href="http://nginx.org/">nginx.org</a>.<br/>
23Commercial support is available at
24<a href="http://nginx.com/">nginx.com</a>.</p>
25
26<p><em>Thank you for using nginx.</em></p>
27</body>
28</html>

シェルに接続する

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

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

具体例

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

1docker run -it nginx-image:test-tag bash
2
3root@ad5c1ea85e7a:/# ls
4bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee