[A-00189] Dockerで色々やってみる

Dockerを使っていろんなものを動かしてみたいと思います。

・Docker上でJavaのHelloWorldしてみる

dockerでPlane Javaプログラムを動かしてみます。

ディレクトリ構成は下記の通りです。

ソースコードは下記です。

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello,Java!");
    }
}
FROM openjdk:21-jdk-slim

WORKDIR /app

COPY Main.java .

RUN javac Main.java

CMD ["java", "Main"]

Dockerfileのと同じ階層で下記のコマンドを実行します。

docker build -t java-app .
simple-java-app1$ docker build -t java-app .
[+] Building 3.4s (9/9) FINISHED                                                                                 docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                             0.2s
 => => transferring dockerfile: 138B                                                                                             0.0s
 => [internal] load .dockerignore                                                                                                0.1s
 => => transferring context: 2B                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/openjdk:21-jdk-slim                                                           2.8s
 => [1/4] FROM docker.io/library/openjdk:21-jdk-slim@sha256:7072053847a8a05d7f3a14ebc778a90b38c50ce7e8f199382128a53385160688     0.0s
 => [internal] load build context                                                                                                0.0s
 => => transferring context: 30B                                                                                                 0.0s
 => CACHED [2/4] WORKDIR /app                                                                                                    0.0s
 => CACHED [3/4] COPY Main.java .                                                                                                0.0s
 => CACHED [4/4] RUN javac Main.java                                                                                             0.0s
 => exporting to image                                                                                                           0.0s
 => => exporting layers                                                                                                          0.0s
 => => writing image sha256:876a2c694c44c5fb4096d6dd6a66db65bbd94efd6d4ae8471900b558f4c147a5                                     0.0s
 => => naming to docker.io/library/java-app                                                                                      0.0s

What's Next?
  View a summary of image vulnerabilities and recommendations → docker scout quickview

次に下記のコマンドを実行します。

docker run java-app
simple-java-app1$ docker run java-app
Hello,Java!

・Docker上でGolangのHelloWorldやってみる

次はGolangでやってみたいと思います。

ディレクトリ構造は下記です。

ソースコードは下記です。

package main

import "fmt"

func main() {
	fmt.Println("Hello,world.")
}
FROM golang:latest

COPY ./main.go ./

CMD [ "go", "run", "main.go" ]

Dockerfileと同じ階層で下記のコマンドを実行します。

docker build -t go-app .
simple-go-app1$ docker build -t go-app .
[+] Building 0.3s (7/7) FINISHED                                                                                 docker:desktop-linux
 => [internal] load .dockerignore                                                                                                0.0s
 => => transferring context: 2B                                                                                                  0.0s
 => [internal] load build definition from Dockerfile                                                                             0.0s
 => => transferring dockerfile: 119B                                                                                             0.0s
 => [internal] load metadata for docker.io/library/golang:latest                                                                 0.0s
 => [internal] load build context                                                                                                0.0s
 => => transferring context: 28B                                                                                                 0.0s
 => [1/2] FROM docker.io/library/golang:latest                                                                                   0.0s
 => CACHED [2/2] COPY ./main.go ./                                                                                               0.0s
 => exporting to image                                                                                                           0.0s
 => => exporting layers                                                                                                          0.0s
 => => writing image sha256:6c6309fdc4bcb857f35c55a10b53b1aab27a5e125be31f09cf09e4c034767179                                     0.0s
 => => naming to docker.io/library/go-app                                                                                        0.0s

What's Next?
  View a summary of image vulnerabilities and recommendations → docker scout quickview

下記のコマンドでHelloWorldを実行します。

docker run go-app
simple-go-app1$ docker run go-app
Hello,world.

・Docker上でpythonのHelloWorldしてみる

今度はpythonでやってみます。

ディレクトリ構造はこちら

下記のソースコードを作成します。

FROM python:3-slim

COPY main.py main.py

CMD ["python","main.py"]

def call_hello():
    print('Hello,Python!')

if __name__ == '__main__':
    call_hello()

下記のコマンドを実行してビルドします。

docker build -t python-app .
simple-python-app1$ docker build -t python-app .
[+] Building 15.9s (7/7) FINISHED                                                                                     docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                  0.1s
 => => transferring dockerfile: 103B                                                                                                  0.0s
 => [internal] load .dockerignore                                                                                                     0.1s
 => => transferring context: 2B                                                                                                       0.0s
 => [internal] load metadata for docker.io/library/python:3-slim                                                                      3.6s
 => [internal] load build context                                                                                                     0.0s
 => => transferring context: 124B                                                                                                     0.0s
 => [1/2] FROM docker.io/library/python:3-slim@sha256:5dc6f84b5e97bfb0c90abfb7c55f3cacc2cb6687c8f920b64a833a2219875997               11.0s
 => => resolve docker.io/library/python:3-slim@sha256:5dc6f84b5e97bfb0c90abfb7c55f3cacc2cb6687c8f920b64a833a2219875997                0.0s
 => => sha256:1103112ebfc46e01c0f35f3586e5a39c6a9ffa32c1a362d4d5f20e3783c6fdd7 3.51MB / 3.51MB                                        0.9s
 => => sha256:e71929d491677492d7a4ad57a7fa341553306ea7568c09e4231dcc509dd00ae9 11.99MB / 11.99MB                                      1.6s
 => => sha256:5dc6f84b5e97bfb0c90abfb7c55f3cacc2cb6687c8f920b64a833a2219875997 1.65kB / 1.65kB                                        0.0s
 => => sha256:ac212230555ffb7ec17c214fb4cf036ced11b30b5b460994376b0725c7f6c151 1.37kB / 1.37kB                                        0.0s
 => => sha256:23cd4350f4bde96406bb9025059e69cb9d533a372427877ec86d2a38083eb02d 6.71kB / 6.71kB                                        0.0s
 => => sha256:8a1e25ce7c4f75e372e9884f8f7b1bedcfe4a7a7d452eb4b0a1c7477c9a90345 29.12MB / 29.12MB                                      2.0s
 => => sha256:c529235f83c86ca0fb587777a0c0180058e05e0b37f760212ff224a20d83a9b8 245B / 245B                                            1.2s
 => => sha256:a47354887c310a4b86f2eec46704051aa91513f71ef42a44dcedeea84062c163 2.98MB / 2.98MB                                        1.8s
 => => extracting sha256:8a1e25ce7c4f75e372e9884f8f7b1bedcfe4a7a7d452eb4b0a1c7477c9a90345                                             4.8s
 => => extracting sha256:1103112ebfc46e01c0f35f3586e5a39c6a9ffa32c1a362d4d5f20e3783c6fdd7                                             0.4s
 => => extracting sha256:e71929d491677492d7a4ad57a7fa341553306ea7568c09e4231dcc509dd00ae9                                             1.8s
 => => extracting sha256:c529235f83c86ca0fb587777a0c0180058e05e0b37f760212ff224a20d83a9b8                                             0.0s
 => => extracting sha256:a47354887c310a4b86f2eec46704051aa91513f71ef42a44dcedeea84062c163                                             1.2s
 => [2/2] COPY main.py main.py                                                                                                        1.0s
 => exporting to image                                                                                                                0.0s
 => => exporting layers                                                                                                               0.0s
 => => writing image sha256:9c6e253809c93377de173dd3e4c381fca9868b0f049b18d24ee3623e52e5c6f4                                          0.0s
 => => naming to docker.io/library/python-app                                                                                         0.0s

What's Next?
  View a summary of image vulnerabilities and recommendations → docker scout quickview

次にコンテナを実行します。

docker run python-app
simple-python-app1$ docker run python-app
Hello,Python!

・Appendix

参考文献はこちら

https://www.javaguides.net/2023/08/dockerize-hello-world-java-program.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*