dockerシリーズ2独自のdockerおよびDockerfile構文を作成する
独自のdockerを作成
@SpringBootApplication
@RestController
public class DockerApplication {
@RequestMapping("/")
public String home() {
return "Hello Docker World";
}
public static void main(String[] args) {
SpringApplication.run(DockerApplication.class, args);
}
}
コードの詳細はgithub 3を参照してください.実行pom.xmlはdocker-0.0.1-SNAPSHOTを生成する.JArは、上で生成するdocker-0.0.1-SNAPSHOTを.JArは作業ディレクトリにコピーします:/docker/simplebuild 4.作業ディレクトリの下にDockerfileを追加します.内容は次のとおりです.
FROM openjdk
MAINTAINER hryou0922
ENV JAVA_HOME /usr/local/java
RUN echo $JAVA_HOME
ADD docker-0.0.1-SNAPSHOT.jar /home/hry/docker/simplebuild/contain/app.jar
#
RUN useradd hryou0922
RUN echo "hryou0922:hryou0922" | chpasswd
#
USER hryou0922
#
VOLUME /home/hry/docker/simplebuild
#
WORKDIR /home/hry/docker/simplebuild/contain/
EXPOSE 8080
ENTRYPOINT ["java","-jar" ,"/home/hry/docker/simplebuild/contain/app.jar"]
Dockerfile構文の説明本章の後に5.imangeを確立し、現在のディレクトリで実行するコマンド実行imageコマンドの作成
```
docker build -t cnbao/myjdk .
```
命令の末尾Dockerfileが現在のパスの下にあることを示します
現在のimagesリストを表示すると、imageが生成されていることがわかります.
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cnbao/myjdk latest 9c69de534f81 3 days ago 655.8 MB
コンテナを作成して実行
hry@hry-VirtualBox:/home/share$ docker run -d --name test4 -p 8080:8080 cnbao/myjdk
57702e0c5c60252ffac2b8832c2cb455aeab62957e63013daeb74a0e47bb2a63
サービスインタフェースにアクセスし、サービスが正常に起動したことを示します.
hry@hry-VirtualBox:/home/share$ curl http://127.0.0.1:8080/
Hello Docker Worldhry
Dockerfile構文
Dockerfileの命令は大文字と小文字を無視し、大文字を使用することをお勧めします.コメントとして#を使用します.各行には1つの命令しかサポートされていません.
FROM :
tag:バージョン番号、ない場合は最新バージョン :MAINTAINER <name>
RUN (the command is run in a shell - `/bin/sh -c`)
RUN ["executable", "param1", "param2" ... ] (exec form)
CMD ["executable","param1","param2"] (like an exec, this is the preferred form)
CMD command param1 param2 (as a shell)
:ENTRYPOINT ["executable", "param1", "param2"] (like an exec, the preferred form)
ENTRYPOINT command param1 param2 (as a shell)
のみを実行する命令の使用は、1つは単独で使用する場合に分けられる.単独で使用する場合、CMDコマンドを使用し、CMDが完全に実行可能なコマンドである場合、CMDコマンドとENTRYPOINTは、最後のCMDまたはENTRYPOINT有効
# CMD , ENTRYPOINT
CMD echo “Hello, World!”
ENTRYPOINT ls -l
の別の使用法とCMDコマンドとを組み合わせてENTRYPOINTを指定するための暗黙パラメータを互いに上書きします.この場合、CMDコマンドは完全な実行可能コマンドではなく、パラメータ部分のみです.ENTRYPOINT命令はJSON方式でのみ実行命令を指定でき、パラメータは指定できません.FROM ubuntu
CMD ["-l"]
ENTRYPOINT ["/usr/bin/ls"]
# memcached
ENTRYPOINT ["memcached"]
USER daemon
ENTRYPOINT ["memcached", "-u", "daemon"]
:EXPOSE [...]
#
EXPOSE port1
#
docker run -p port1 image
=====================================
#
EXPOSE port1 port2 port3
#
docker run -p port1 -p port2 -p port3 image
#
docker run -p host_port1:port1 -p host_port2:port2 -p host_port3:port3 image
:ENV <key> <value>
ENV JAVA_HOME /usr/local/java8
:
ADD <src> <dest>
<src> /
<dest>
:
VOLUME ["DIR"]
VOLUME ["/tmp/data"]
このDockerfileでimageを生成するコンテナを実行し、/tmp/dataディレクトリのデータはコンテナが閉じた後、中のデータは :
WORKDIR /path/to/workdir