Docker之JDK镜像

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方式

  • 登陆容器,使用ssh
  • 不推荐这样作,容器需启动sshd,存在开销和攻击面增大的问题违反Dockers倡导的一个容器一个进程的原则

2.2 attach命令

docker attach java  java

2.3 exec命令

docker exec -it java /bin/bash  docker

2.4 attach与exec的区别

  • attach阻塞式的,若是多个终端同时attach到同一个容器时,全部容器都会同步的显示,若是一个窗口发生阻塞其它窗口也会阻塞
  • 经过attach登陆容器后若是从空上容器中exit(Ctrl + D)退出的话,这个容器也会中止,使用Ctrl + P + Q方式退出不会致使容器中止运行了

3 JDK镜像的做用

做为基础镜像或运行时环境 shell

3.1 做为基础镜像

Main.javabash

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello Main!");
  }
}
复制代码

编写dockerfile(文件名为dockerfile):app

FROM java:7
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN javac Main.java
复制代码
  • 此镜像会编译当前目录下的Main.java

构建镜像ssh

docker build -t my-java-app .
复制代码

运行容器ide

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。ui

相关文章
相关标签/搜索