正如前面教程文章所提到的,Docker可以執(zhí)行任何應(yīng)用程序。
在這里,創(chuàng)建一個Java應(yīng)用程序并使用docker
進(jìn)行運(yùn)行。此示例分以下幾個步驟完成。
目錄是組織文件所必需的,所以首先使用以下命令創(chuàng)建目錄一個目錄。
$ mkdir -p /home/yiibai/docker/java-docker-app
現(xiàn)在創(chuàng)建一個Java文件,將此文件保存為Hello.java
。這個 Hello.java
的代碼內(nèi)容如下 -
class Hello{
public static void main(String[] args){
System.out.println("This is first java app \n by using Docker");
}
}
將其保存在文件Hello.java
中,并放置在 /home/yiibai/docker/java-docker-app
目錄下。
創(chuàng)建Java文件后,還需要創(chuàng)建一個Dockerfile文件,其中包含了Docker的說明。 Dockerfile不包含任何文件擴(kuò)展名。 所以這個文件簡單使用Dockerfile
作為名稱保存即可。此 Dockerfile 文件的內(nèi)容如下 -
FROM java:8
COPY . /var/www/java
WORKDIR /var/www/java
RUN javac Hello.java
CMD ["java", "Hello"]
所有指令要使用大寫字母編寫,因為這是它的慣例(約定)。將此文件放在/home/yiibai/docker/java-docker-app
目錄中。 現(xiàn)在將Dockerfile
也放置在在/home/yiibai/docker/java-docker-app
目錄中,與Hello.java
放在同一個目錄。
如下 -
yiibai@ubuntu:~/docker/java-docker-app$ ll
total 16
-rw-rw-r-- 1 yiibai yiibai 104 Jun 2 23:33 Dockerfile
-rw-rw-r-- 1 yiibai yiibai 135 Jun 2 23:33 Hello.java
yiibai@ubuntu:~/docker/java-docker-app$
創(chuàng)建Dockerfile后,需要更改工作目錄。
$ cd /home/yiibai/docker/java-docker-app
現(xiàn)在,按照以下命令創(chuàng)建一個映像。這里必須以root身份登錄才能創(chuàng)建映像。 在這個例子中,我們已經(jīng)切換為root用戶的身份。 在以下命令中,java-app
是的映像名稱。當(dāng)然Docker的映像名稱可以是任意的。
yiibai@ubuntu:~/docker/java-docker-app$ -rw-rw-r-- 1 yiibai yiibai 135 Jun 2 23:33 Hello.java
-rw-rw-r--: command not found
yiibai@ubuntu:~/docker/java-docker-app$
yiibai@ubuntu:~/docker/java-docker-app$
yiibai@ubuntu:~/docker/java-docker-app$
yiibai@ubuntu:~/docker/java-docker-app$ docker build -t java-app .
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.29/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=java-app&target=&ulimits=null: dial unix /var/run/docker.sock: connect: permission denied
yiibai@ubuntu:~/docker/java-docker-app$ sudo docker build -t java-app .
[sudo] password for yiibai:
Sending build context to Docker daemon 3.072kB
Step 1/5 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
---> d23bdf5b1b1b
Step 2/5 : COPY . /var/www/java
---> f7bd63fd32bf
Removing intermediate container 39420a84d3eb
Step 3/5 : WORKDIR /var/www/java
---> 5006feada9ef
Removing intermediate container 85c71c02d8c7
Step 4/5 : RUN javac Hello.java
---> Running in 6027643fedc0
---> 3b54e4630178
Removing intermediate container 6027643fedc0
Step 5/5 : CMD java Hello
---> Running in 22da1569aa2c
---> bd61e7f49911
Removing intermediate container 22da1569aa2c
Successfully built bd61e7f49911
Successfully tagged java-app:latest
yiibai@ubuntu:~/docker/java-docker-app$
如果未安裝Java 8,那么會自動下載Java 8安裝再執(zhí)行。在成功構(gòu)建映像后。 現(xiàn)在,我們可以運(yùn)行Docker映像了。
成功創(chuàng)建映像后 現(xiàn)在可以使用run
命令運(yùn)行docker。以下命令用于運(yùn)行java-app
。
yiibai@ubuntu:~/docker/java-docker-app$ sudo docker run java-app
上面命令的運(yùn)行輸出結(jié)果如下 -
yiibai@ubuntu:~/docker/java-docker-app$ sudo docker run java-app
This is first java app
by using Docker
yiibai@ubuntu:~/docker/java-docker-app$
在這里可以看到,在運(yùn)行sudo docker run java-app
之后,它產(chǎn)生了一個輸出。
在經(jīng)過上5個步驟之后,您應(yīng)該已經(jīng)可在系統(tǒng)上成功運(yùn)行docker映像了。除了所有這些以外,還可以在接下來的文章中學(xué)習(xí)和使用其他命令。