为什么docker容器内无法启动tomcat,容器外可以
发布网友
发布时间:2022-04-26 00:54
我来回答
共1个回答
热心网友
时间:2022-06-18 23:20
步骤1:为我们的容器创建第一个镜像
# 以 centos 镜像作为基础镜像,我们启动自己的容器并在其中执行/bin/bash命令
# 注:-t -i 参数用于创建一个虚拟的命令行。
sudo docker run -t -i centos /bin/bash
现在我们已经成功的运行了自己的第一个容器,并且进入到容器的命令行界面中。在容器中,我们执行下面的命令:
yum -y update # 更新软件包
yum install which # 安装which命令
yum install git # 安装Git
安装完成后,按 Ctrl + d 来退出容器的命令行。
# 执行sudo docker ps -a,可以看到被我们终止的容器
CONTAINER ID IMAGE COMMAND CREATED……
da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..
把我们所做的改变提交到一个新的容器:
# 这里我们创建一个自己的基础容器,容器中安装好了文章中所需的常用工具。读者的容器 id 可能与文章中的有所不同,以上一步 docker ps -a 的结果为准。
sudo docker commit da90 custom/base
容器成功提交后,执行 sudo docker images ,我们会看到刚才提交的容器(如下面的结果所示)。我们就以这个容器为基础容器,再来创建一个新的容器。
REPOSITORY TAG IMAGE ID CREATED
custom/base latest 05b6cecd370b 2 minutes ago
centos 6.4 539c0211cd76 10 months ago
centos latest 539c0211cd76 10 months ago…
步骤2:创建新的容器,并安装 apache
# 以 custom/base 容器为基础,运行一个新的容器。
sudo docker run -t -i custom/base /bin/bash
# 安装 httpd
yum install httpd
步骤3:再次提交新的容器
按 Ctrl + d 来退出容器的命令行,然后执行命令:
# 这个命令会把步骤2中我们安装 httpd 带来的改变提交到新的名为 custom/httpd 的容器镜像中。你的容器 id 可能会和文章中有所不同,以 sudo docker ps -a 命令的结果为准。
sudo docker commit aa6e2fc0b94c custom/httpd
你应该已经发现了,我们创建了一个带有 http 服务器并可以复用的容器镜像。你可以根据这种思想,为自己所需的每个组件都创建一个容器,然后把这些容器复用于开发环境或者生产环境。
步骤7:运行 http 服务器
# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.
# -v 参数把主机共享给虚拟机的一个卷挂载到容器中
# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile
# -p 参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在 Vagrantfile 中被绑定到主机的8080端口,也就是:主机8080->虚拟机80->容器80
sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash
# 启动 Apache
apachectl -k start
生产环境,测试环境中,Docker 可以做什么
从上面不难看出,容器和虚拟机的概念并不相同,容器也并不能取代虚拟机。在容器力所不能及的地方,虚拟机可以大显身手。例如:宿主机是 Linux,只能通过虚拟机运行 Windows,Docker 便无法做到。再例如,宿主机是 Windows,Windows 并不能直接运行 Docker,Windows上的 Docker 其实是运行在 VirtualBox 虚拟机里的。Docker ...
在docker中怎么修改tomcat配置文件
1、登录到阿里云开发者管理后台,点击左侧的镜像加速器,右侧会显示镜像加速器的地址。2、在etc目录下创建一个docker目录,命令为sudo mkdir -p /etc/docker。3、 在docker目录下添加一个daemon.json文件。4、重新加载json文件,命令sudo systemctl daemon-reload。5、重新启动docker,命令sudo systemctl ...
docker下tomcat启动慢,如何修改呢
1、断开网络。是有线的就拔掉网线,无线的就断开无线的网络,确保电脑是无网络状态。这样做的目的是确保系统开机时不自动联网进行升级。2、如果是台式机,建议将机箱打开,拔出主板上的锂电池。也可尝试忽略这一步。(笔记本没有这个了,就不需要了)当然这个步骤可能不需要。原因是因为电池是存储电脑关...
docker 外网访问不了docker容器
1:你安装docker的服务器没有关闭防火墙,也就是说你访问你安装docker的物理机都访问不了,物理机里的docker就更访问不了了。2:docker在创建镜像的时候没有做端口映射,这是就出现能访问物理机,但访问不了docker,你可以使用docker ps 查看镜像的端口映射情况。3:端口映射不正确,如你docker中某一容...
docker与tomcat、jboss、glassfish、weblogic都叫容器有什
Tomcat、JBoss这些软件主要用作web服务器,它们能运行已经构建好的Java web项目。相比之下,Docker是一种底层的虚拟容器技术。它自身无法直接运行完成构建的Java web项目。但是,Docker可以用来构建包含Tomcat的镜像,借助此镜像就可以运行Java web项目了。所以,Docker与这些传统的web服务器容器在本质上存在区别...
如何设置Docker容器中Java应用的内存限制
docker run --rm -m 512m -e JAVA_OPTS='-Xmx512m' tomcat:8 这个方法有两个问题 1. 需要管理员保证容器内存和JVM内存设置匹配,否则可能引发错误 2. 当对容器内存限制调整时,环境变量也需要重新设定,这就需要重建一个新的容器 是否有一个方法,可以让容器内部的JVM自动适配容器的内存限制?
微服务架构之「 容器技术 」
我们启动容器的时候(docker run …),Docker Engine 只不过是启动了一个进程,这个进程就运行着我们容器里的应用。但 Docker Engine 对这个进程做了一些特殊处理,通过这些特殊处理之后,这个进程所看到的外部环境就不再是宿主机的那个环境了(它看不到宿主机中的其它进程了,以为自己是当前操作系统唯一...
Docker安装+HelloWorld+运行Tomcat
在使用 Docker 时,可能会遇到一些常见问题。例如,当尝试运行 Tomcat 时,您可能会遇到启动速度慢的问题。这通常与 Java 的 SecureRandom 类在生成种子时使用阻塞型随机数生成器有关。为了解决此问题,您可以尝试以下方法:使用后台方式运行 Tomcat。通过 bash 进入容器。安装并使用 vim。修改 java....
Docker平台上部署nginx、tomcat web容器
search tomcat, docker pull tomcat 8. 启动tomcat容器,映射8080端口:docker run -itd -p 8080:8080 tomcat:latest 服务验证及清理:9. 浏览器访问宿主机+8080,确认tomcat运行。删除tomcat镜像和容器的方法同nginx部分。以上就是使用Docker部署nginx和tomcat Web容器的详细步骤,希望对你有所帮助!
docker的架构(docker的架构体系是服务器和客户端)
具体来说,Docker是一个睁皮开源的容器化平台,可以在不同的操作系统和处理器架构上运行。Docker使用了Linux内核中的一些特性,如Cgroups和命名空间,可以在不同的操作系统和处理器架构上实现轻量级虚拟化。因此,敬早颤OpenWrt的Docker应该支持与OpenWrt本身支持的处理器架构相同的架构,例如x86、ARM、MIPS...