™技术博客

docker | 共享宿主机环境

2021年5月24日

宿主机安装配置jdk

  • 列出所有已经被安装的,名字中包含jdk字符串的RPM包
    1
    > rpm -qa|grep java
  • 删除旧版本的jdk
    1
    2
    3
    4
    > rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
    > rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
    > rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
    > rpm -e --nodeps java-1.8.0-openjdk- 1.8.0.65-3.b17.el7.x86_64
  • 下载jdk1.8 解压
  • 设置环境变量
    1
    2
    3
    4
    5
    6
    7
    > vim ~/.bashrc

    #set oracle jdk environment
    export JAVA_HOME=/usr/jdk-8u172-linux-x64
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
  • 环境变量生效
    1
    > source ~/.bashrc

    修改dockerfile文件,共享宿主机jdk

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 基于哪个镜像
    FROM centos:7
    #配置中文
    ENV LANG C.UTF-8
    WORKDIR bhapp
    # 拷贝文件到容器
    ADD GwMicroService-1.1.0.jar app.jar
    ADD bootstrap.yml bootstrap.yml
    RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone \ && bash -c 'touch app.jar'

    ENV JAVA_HOME="/usr/jdk1.8.0_172"
    ENV PATH="${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/sbin"
    # 开放8081端口
    EXPOSE 8081
    # 配置容器启动后执行的命令
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xms125m","-Xmx125m","-jar","app.jar"]

  • 由于以上镜像是没有jdk环境的,所以在生成容器的时候一定要把宿主机jdk目录挂载到容器中。我这里使用的时dockercompose,docker-compose.yml文件如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    version: '3'
    services:
    apm-storage:
    ports:
    - "8003:8003"
    volumes:
    - /usr/jdk1.8.0_172:/usr/jdk1.8.0_172
    tty: true
    network_mode: host
    restart: always
Tags: docker

扫描二维码,分享此文章