1 创建并运行JDK容器
# 下载Java镜像
docker pull java
# 查看镜像
docker images
# 创建并启动容器
docker run -d -it --name java java
run 使用镜像创建一个容器
-d 容器运行于后台
-i 以交互模式运行容器
-t 为容器重新分配一个伪输入终端,通常与-i同时使用
--name 给容器起个名字,方便容器管理
# 查看运行中的容器
docker ps
# 查看容器(包括不运行的容器)
docker ps -a
# 启动一个容器
docker start java
# 登录容器,使用attach
docker attach java
# 登录容器,使用exec
docker exec -it java /bin/bash
# 停止容器
docker stop java
2 登录容器的三种方式
2.1 ssh方式
2.2 attach命令
2.3 exec命令
docker exec -it java /bin/bash
2.4 attach与exec的区别
- attach阻塞式的,如果多个终端同时attach到同一个容器时,所有容器都会同步的显示,如果一个窗口发生阻塞其它窗口也会阻塞
- 通过attach登录容器后如果从空上容器中exit(Ctrl + D)退出的话,这个容器也会停止,使用Ctrl + P + Q方式退出不会导致容器停止运行了
3 JDK镜像的作用
3.1 作为基础镜像
Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Hello Main!");
}
}
编写dockerfile(文件名为dockerfile):
FROM java:7
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN javac Main.java
- 此镜像会编译当前目录下的Main.java
构建镜像
docker build -t my-java-app .
运行容器
docker run -it --rm --name my-running-app my-java-app
--rm Automatically remove the container when it exits
3.2 作为运行时环境
docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp java:7 javac Main.java
-w, --workdir string Working directory inside the container
上述操作会把当前目录作为卷添加到容器中,并把卷设置为工作目录,然后运行命令javac Main.java
,这会告诉Java编译Main.java,并将Java类文件输出到Main.class。