3.Docker
虚拟机技术可以在一台物理机上通过虚拟化层创建多个独立的虚拟操作系统实例,每个实例可独立运行。但是倘若我只想独立部署几个应用,并且互不干扰,那么就会造成浪费–总不能在一个操作系统里只部署一个应用环境吧!所以我们需要容器技术。容器技术仅隔离应用的运行时环境(用户空间、依赖、文件系统等),容器之间共享宿主机的操作系统内核,无需独立内核,启动速度快,占用内存小。而Docker便是容器技术的一个实现。
我使用docker-compose.yml来对docker进行了配置,在其中声明了数据库服务,wordpress服务,持久化存储定义和网络服务等。这些配置背后的原理还需要在后续了解,在此先略过。
在定义docker-compose.yml后,便可以通过如下代码启动容器中的服务:
docker-compose up -d
-d表示容器服务在后台运行。你可以通过以下代码使容器进程及其网络命名空间停止并删除,但默认不删除镜像和volume数据。需要注意:容器本身是易逝的。通过 volumes(卷)将容器内的数据(如数据库文件、上传的图片)挂载到宿主机,实现持久化存储。
docker-compose down
随后继续输入
docker-compose up -d
则会重新创建全新的容器进程。
如果想要与之交互,则可以选择使用
docker exec -it your_container_name bash
- -t: 在新容器内指定一个伪终端。
- -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
检查状态,可用
docker-compose ps
接下来就能进入docker进行一系列操作了
————————————————————————————————-
铺垫一下,在这里提一嘴Docker网络相关知识。这是自定义一个bridge网络的方法:
docker network create wp_network
你可以在.yml文件中来建立容器和wp_network(网络名)的对应关系。
下面是一些常见Docker网络的名词解释:
- Docker0接口:在创建一个Docker后系统会默认创建一个Docker0接口,是默认bridge模式的网关,容器的数据要进出必须经过Docker0。同时,如果创建新的容器,也会接入该网络。
- veth:即virtual ethernet(虚拟以太网),可简单想象为一条网线,把两个接口相连接。
- Docker0接口和容器上的接口(例如eth0)都会有一个附属接口,附属接口之间通过veth方式相互连接。
- 如果创建了新的Docker,新的Docker中的附属接口与Docker0的一个新创建的附属接口相互连接。
Docker 提供了多种网络模式来满足不同的需求,如 bridge 网络、host 网络和 none 网络等。
- 默认的bridge网络实际上就是上述Docker0,veth,附属接口之间的联系关系,创建docker后就已经默认生成。
- 自定义的bridge网络通过
docker network create your_network来创建,内置DNS解析可以直接使用容器名通信。 - host网络只有一个,Docker在host网络下共享主机的网络命名空间,可以把Docker理解为host的一个应用。
- none网络无法与外部网络和容器通信,仅保留lo接口,可用本地回环。
在后续的配置SSL的实践中,将进一步深入有关概念
评论(0)
暂无评论