docker-启动守护式容器

本文探讨了Docker容器的启动方式,重点在守护式容器的使用。通过`docker run -d`命令启动的守护式容器,需要有前台进程以保持运行状态。当没有交互或前台任务时,容器可能会自动退出。通过运行如`top`或创建死循环的命令,可以确保容器持续运行。举例说明了如何创建一个后台运行并持续输出的守护式容器。

启动容器的方式:交互式和非交互式/守护式

  • 启动交互式容器

  • 启动守护式容器:不需要交互,只要跑着执行就行了

启动交互式容器

docker run -it --name=interactive centos

 

启动守护式容器

docker run -d 

-d: 以后台运行的方式运行容器,返回容器id,也就是启动守护式容器

可以看出并没有进入交互式。若是进入交互式,用户变成root。

一般情况下,进程进入后台,前面看不到,但能够查到进程在运行中。

我运行了docker ps 查看当前正在运行的容器,却没有看到刚才启动的守护式容器,这就比较诡异了???

查看全部的进程,发现守护式容器已经退出了。

原因:

这是docker的机制,Docker容器后台运行,就必须有一个前台进程,也就是说刚才的守护容器自动退出了。

个人理解:前台要有一个交互,不然就会认为这个容器没啥事可做,就给关了

也有一些命令不会自动退出,像top, tail等

要想容器一直运行,最好将运行的容器以前台的形式运行。

看这种守护式容器

docker run -d --name=si_xun_huan centos /bin/sh -c "while true; do echo hello world; sleep 1;done"

后台运行一个死循环,且和前台有交互,因为不停的打印hello world,这种情况下,该容器就会一直运行。

 

从运行9s到44秒都没死

### 解决 Docker Compose 启动容器时的网段 IP 地址冲突 当使用 Docker Docker Compose 部署应用时,可能会遇到由于默认创建的桥接网络(如 `br-xxxx`)与其他现有网络发生 IP 冲突的情况。为了防止这种情况的发生并确保稳定的网络环境,可以采取以下措施: #### 方法一:修改 Docker 守护进程配置文件 通过编辑 Docker守护进程配置文件来指定自定义的 IP 段是一个有效的方法。这可以通过向 `/etc/docker/daemon.json` 文件中添加 `"bip"` 参数实现。 ```json { "max-concurrent-downloads": 10, "log-driver": "json-file", "log-level": "warn", "log-opts": { "max-size": "10m", "max-file": "3" }, "bip": "179.30.0.1/24", "data-root": "/var/lib/docker" } ``` 此方法适用于全局范围内的所有容器,并能从根本上避免因自动分配而导致的潜在冲突[^4]。 #### 方法二:在 docker-compose.yml 中定义静态 IP 地址 另一种更为灵活的方是在 `docker-compose.yml` 文件内为特定服务设定固定的 IP 地址。这种方允许更精细地控制各个服务之间的通信路径而不影响其他部分。 ```yaml version: '3' services: walle: image: your_image_name networks: custom_network: ipv4_address: 192.168.50.10 networks: custom_network: driver: bridge ipam: config: - subnet: 192.168.50.0/24 ``` 这种方法不仅解决了当前项目中的问题,还提高了系统的可维护性扩展性[^3]。 #### 方法三:调整已有网络设置 如果已经存在某些由 Docker 或者 Docker Compose 自动生成但引起冲突的桥梁接口(比如 `br-xxxx`),那么可以直接删除这些不必要的网络资源或更改其参数以适应新的需求。需要注意的是,在执行此类操作前应先停止依赖于它们的服务以免造成数据丢失或其他异常状况。 对于那些不希望改变整体架构又急需临时绕过某个具体障碍的情形来说,也可以考虑手动移除有问题的网桥设备再重新构建所需连接关系。 综上所述,以上三种方案都可以有效地帮助处理Docker Compose启动过程中可能出现的IP地址冲突现象。选择哪一种取决于实际应用场景个人偏好等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值