[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
コメントを残す