自学docker的小疑惑

区分好容器和镜像

Docker中的容器和镜像是两个核心概念,它们在Docker技术中扮演不同的角色。

镜像(Image):在Docker中,镜像是一个可执行文件,它包含了构建和运行容器所需的所有文件、配置和依赖项。镜像可以看作是一个不可变的模板或蓝图,用于创建Docker容器。镜像可以由Dockerfile文件通过指令来构建,或者可以从Docker Hub或私有的镜像仓库中获取。镜像是只读的,当你运行一个容器时,实际上是从镜像创建了一个新的可写层,该层用于容器的文件系统和运行时状态。

容器(Container):容器是从镜像创建的一个实例,它可以运行在Docker主机上的独立环境中。容器是一个轻量级、可移植、自包含的单元,它包含了运行应用程序所需的所有依赖项和配置。一个容器可以被启动、停止、删除和重新启动。容器之间是相互隔离的,每个容器都有自己的文件系统、网络和进程空间。


简单来说,镜像是一个静态的文件,用于创建Docker容器的模板,而容器是镜像的一个运行实例,包含了正在运行的应用程序和其依赖项。
通过使用镜像,你可以创建和部署多个容器,这些容器可以独立运行并且彼此之间相互隔离(~记住等会要考)。镜像提供了可复用和可扩展的性质,使得应用程序的部署更加方便和可靠。

docker内端口占用问题
 

 如上我在docker内开启了两个靶场分别映射到主机32770和8000端口,都用的是docker内的80端口,我在想他俩不会冲突吗。思考过后,我突然想起来了容器的概念

在同一个容器内部,容器的端口是相对于容器的网络命名空间来说的,并且容器内部的端口是在容器的网络命名空间中唯一的。因此,在同一个容器内部,不会发生端口冲突。
例如,假设你在容器中运行了一个Web服务器,并将容器内部的80端口映射到主机的8080端口。在容器内部,80端口仍然是唯一的,并且你可以运行多个容器实例,每个实例都有自己唯一的80端口。
但是,当你把容器的端口映射到主机上时,容器的端口与主机的端口之间就存在可能的冲突。如果在同一台主机上运行多个容器,并且它们都将容器内的80端口映射到主机的相同端口上(例如8080),就会发生端口冲突。
因此,在设置容器的端口映射时,确保在同一台主机上运行的容器使用不同的主机端口来避免冲突。

所以只有主机端口冲突的情况不会有docker容器端口冲突的情况。

docker内是否开启需要mysql,nginx等服务
 

回想我之前用主机使用phpstudy辛辛苦苦配mysql,nginx,apache等环境搭建靶场的时候,我在想是不是需要在docker内也开启mysql和nginx镜像服务。查阅资料总结出

在搭建Docker上的靶场环境时,可以通过使用现成的Docker镜像来快速部署应用程序,而不需要手动安装和配置MySQL和Nginx服务。Docker镜像包含了应用程序的所有依赖项和配置,并提供了一个独立的容器来运行应用程序。
当你在Docker上部署应用程序时,你可以选择使用适用于应用程序的特定镜像,该镜像已经包含了MySQL和Nginx等服务。这样,你只需要运行这个镜像,就能够快速启动应用程序,并自动配置相关的服务。
使用Docker的好处在于它提供了隔离的容器,每个容器都有自己的独立环境和资源,使得应用程序在不同的环境中能够运行一致并且互相隔离。这样,你可以通过创建多个容器来模拟多个不同的环境,而不需要为每个环境都手动安装和配置MySQL和Nginx等服务。
因此,使用Docker可以大大简化部署过程,并提供了一种可重复、可移植和一致的部署方式。在Docker上部署应用程序,你只需要关心应用程序本身,而不需要过多关注底层的服务配置和管理。
 

总结就是一句话,弄懂容器的概念。这些问题真的是傻,一定要弄清楚基础概念。

还有些问题还没搞懂,

webug的靶场已经打开,但是访问32771端口却无法访问

靶场容器已经运行了,为啥还是不能访问,有没有大佬给解答一下~😘

法一:

  • 因为docker容器分配的网段和物理机的不一致,无法直接访问。在启动容器的命令中, 加一个属性 --net=host,这样就是让容器直接使用宿主服务器的ip。类似于虚拟机docker中映射的服务端口物理机无法访问,可以尝试该方法是否可以解决。

靶场容器已经运行了,为啥还是不能访问,有没有大佬给解答一

有问题继续更新~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值