记录一下使用docker安装jdk17,安装其他应用也是通用的道理,只需换一下镜像版本即可。
安装命令
docker run -d --name jdk_17 -p 8080:8080 tomcat:10-jdk17-openjdk
该命令用于启动一个名为 jdk_17 的 Docker 容器,并将其后台运行,以便部署和访问 Java Web 应用。
参数 |
说明 |
|
启动一个新的容器。 |
|
以**分离模式(detached mode)**运行容器,即在后台运行,不占用当前终端窗口。 |
|
为容器指定名称为 ,便于后续管理操作(如查看日志、停止、删除等)。 |
|
将宿主机的 8080 端口 映射到容器内部的 8080 端口。这样可以从外部通过访问宿主机的 来访问容器中的 Tomcat 服务。 |
|
使用预装了 OpenJDK 17 的官方 Tomcat 10 镜像。该镜像已集成 JDK 环境,可直接运行基于 Servlet 5.0 的 Java Web 应用。 |
可能出现的问题
权限不足
执行上述命令时,可能会出现这个问题。
xq@ubuntu:~$ docker run -d --name jdk_17 -p 8080:8080 tomcat:10-jdk17-openjdk
docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied
Run 'docker run --help' for more information
这是因为当前用户(xq)没有权限访问 Docker 的守护进程(daemon)。Docker 默认需要 root 权限 或者属于 docker 用户组 才能执行相关命令。
解决方案1
使用 sudo 运行命令或者切换为 root 用户
sudo docker run -d --name jdk_17 -p 8080:8080 tomcat:10-jdk17-openjdk
或者
sudo -i
转为 root 用户再执行命令
解决方案2
将当前用户加入 docker 用户组
- 创建 docker 组 (如果还没有)
-
sudo groupadd docker
- 将当前用户添加到 docker 组中
-
sudo usermod -aG docker $USER
- 验证是否成功
-
getent group docker
出现类似这种,就表示成功了,退出并重新登录终端或重启系统,使组权限生效
拉取镜像失败
解决方案
换源,首先切换 root 用户,方便操作
修改 源 配置
进入编辑页面
修改配置
{
"registry-mirrors" : [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
}
保存并退出:按 Ctrl + O 保存,按 Enter 确认,然后按 Ctrl + X 退出。
重新加载 systemd 配置
重启 Docker 服务
最后重新输入下载jdk的命令就可以成功下载了