工具与环境
工欲善其事,必先利其器。
- windows 环境, 安装 wsl2
- wsl2 安装 ubuntu 20.04
wsl --list --online // 列出所有可用分发
wsl --install --distribution Ubuntu-20.04 // 安装 分发 Ubuntu-20.04
- ubuntu 20.04 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun // 一键安装
终端使用 Tabby
Docker 简单使用和测试
首先准备一个java方法用于简单测试
// Hello.java
public class Hello {
public static void main(String []args) throws Exception{
while(true){
System.out.println("Hello World");
Thread.sleep(30000);
}
}
}
执行 javac Hello.java 得到 Hello.class
编写Dockerfile
FROM azul/zulu-openjdk:8u332
RUN set -eux; \
groupadd -g 9527 devops && useradd -u 9527 -g devops -d /app devops; \
mkdir /app; \
chown -R devops:devops /app; \
mkdir -p /var/log/iconnector; \
chown -R devops:devops /var/log/iconnector
# change user
USER devops
# copy jar
COPY --chown=devops:devops Hello.class /app/Hello.class
WORKDIR /app
ENTRYPOINT ["java","Hello"]
下载 arthas , 然后当前目录下有四个文件
-rw-r--r-- 1 sjw sjw 536 Nov 4 16:42 Dockerfile
-rw-r--r-- 1 sjw sjw 552 Nov 4 15:12 Hello.class
-rw-r--r-- 1 sjw sjw 191 Nov 4 15:12 Hello.java
-rw-r--r-- 1 sjw sjw 142044 Nov 4 15:14 arthas-boot.jar
打包Docker镜像 这里如果打包报错,需要设置国内Docker镜像,参考 yeasy.gitbook.io/docker_prac…
docker build -t java:v1 .
后台运行镜像
nohup docker run java:v1 &
查看镜像id
root@md61xj4c# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
687b7a796232 java:v1 "java Hello -c 'wget…" 42 minutes ago Up 42 minutes nifty_hawking
将arthas-boot.jar 拷贝到镜像里
docker cp arthas-boot.jar 687b7a796232:/app/arthas-boot.jar
进入镜像,测试arthas的使用
docker exec -it 687b7a796232 /bin/bash
//镜像里执行
devops@687b7a796232:~$ java -jar arthas-boot.jar
小结
- FROM azul/zulu-openjdk:8u332 这是docker的基础镜像,内核使用host的系统内核,azul/zulu-openjdk332还会包含一些内核之外的系统命令。 因此包含除内核外的系统文件加软件(这里是JDK)
- openjdk可以正常使用arthas
- 镜像的大小取决于系统的版本
docker pull azul/zulu-openjdk-alpine:8u332 镜像大小
docker pull azul/zulu-openjdk:8u332 镜像大小
Alpine 系统的相关介绍 yeasy.gitbook.io/docker_prac…