【Docker】Docker1.3改动简介

本文介绍了Docker 1.3版本的重要更新,包括新增的docker exec命令,用于在运行中的容器内执行命令;docker create命令,用于仅创建容器而不立即启动;以及一些安全性改进等。

一段时间没有关注Docker,突然发现它的1.3版本已经在10月28日发布了,而且我认为改动内容非常有价值。

Docker1.2版本的改动,感觉比较有用的有两点:一是将restart的功能由daemon命令中移动到了client的docker run命令中,还可以设置重新启动时不会启动已经挂掉的container,二是支持在运行时对host文件进行修改。其他的改动由于了解的不是很多,不妄作评论,但整体改动感觉不痛不痒。

而刚看到Docker1.3版本的改动,就让我眼前一亮。

首先是docker exec命令,这个命令可以帮助我们很好地解决在运行时对container进行控制的问题,它可以在一个正在运行的container中执行新的命令。而在1.2版本以前,我们要实现这样的功能,只能通过ssh或者nsenter来实现,但两种方法都需要安装相应的程序,而且ssh方法还需要将container内的22端口给映射出来,这样我们会对原有的image做一定的修改,无法保证一个纯净的image。但docker exec命令,可以让我们在正在运行的container中以detach或者interactive的方式来执行新的命令,不需要对原有纯净的image做任何修改。

然后是docker  create命令,原有的docker run命令用来创建一个container并创建一个线程来执行它,而docker create命令只是单纯地创建一个container,并不执行,如果我们需要启动这个container的话,用docekr start命令即可。这样我们可以我们可以预先准备好多个container,配置好相应的挂载存储和端口映射,并在需要的时候才启动这些container,而在1.2版本以前,我们只能傻傻地用docker run命令启动一个container,然后用docker stop命令来停止它,这样做显然很麻烦。其实这种启动方式,早在python版本的客户端API(docekr-py)中采用,这里只是把它拿到docker的client里面使用而已。

最后还有一些安全性方面的改动,这里不再多说。


转载请注明出处:http://blog.youkuaiyun.com/sunset108/article/details/40678279

### Harbor 使用 Docker Compose 启动时 &#39;address already in use&#39; 错误解决方案 当使用 `docker-compose` 配置并启动 Harbor 项目时,如果遇到 `&#39;address already in use&#39;` 的错误提示,通常是因为目标端口已经被其他进程占用。以下是可能的原因以及对应的解决方法: #### 原因分析 1. **Nginx 或其他服务占用了默认的 HTTP 和 HTTPS 端口 (80 和 443)** 默认情况下,Harbor 的 Nginx 实例会监听这些端口。如果系统中的其他服务(如 Apache、另一个 Nginx 实例或其他应用)已经绑定了这些端口,则会出现冲突。 2. **重复运行的 Harbor 容器** 如果之前未完全清理旧的 Harbor 容器或其关联的服务资源,可能会导致多个实例尝试绑定相同的端口。 3. **自定义配置文件中的端口冲突** 用户修改了 `docker-compose.yml` 文件中的端口映射设置,但新指定的端口号已被其他程序占用。 --- #### 解决方案 ##### 方法一:更改 Harbor 的外部访问端口 可以通过编辑 `docker-compose.yml` 文件来调整对外暴露的端口。例如,将原本绑定到主机的 80 和 443 改为其他可用端口,比如 8080 和 8443: ```yaml ports: - "8080:80" - "8443:443" ``` 完成修改后重新执行安装脚本或者手动重启服务: ```bash cd /root/harbor ./install.sh --with-trivy docker-compose down && docker-compose up -d ``` > 修改完成后需更新客户端连接地址以匹配新的端口设定[^1]。 ##### 方法二:释放被占用的目标端口 检查当前哪些进程正在使用 80 和 443 端口,并停止它们。 ```bash sudo lsof -i :80 sudo lsof -i :443 ``` 找到具体的 PID 并终止相应进程: ```bash kill -9 <PID> ``` 确认端口已释放后再试一次启动命令。 ##### 方法三:彻底清除之前的 Harbor 数据和服务状态 有时残留的数据可能导致异常行为。可以按照如下步骤操作: 1. 停止现有容器; 2. 移除所有相关镜像和卷数据;最后再重头部署整个环境。 ```bash docker-compose stop docker-compose rm -fv docker system prune -af --volumes rm -rf /root/harbor/ wget https://github.com/goharbor/harbor/releases/download/v2.x.x/harbor-offline-installer-v2.x.x.tgz tar xf harbor-offline-installer-v2.x.x.tgz cd harbor vim harbor.cfg # 根据需求定制参数 ./install.sh ``` ##### 方法四:切换至 Host 模式下的网络栈 对于某些特定场景下可考虑采用 host 类型网络模式替代 bridge 方式减少潜在干扰因素影响正常通信流程[^5]: ```yaml network_mode: "host" ``` 注意此改动仅适用于 Linux 发行版平台之上实施有效果。 --- ### 总结 以上提供了四种不同角度针对 “address already in use” 这类常见问题处理思路及其具体实现措施说明文档。实际运用过程中可根据具体情况灵活选用最合适的办法加以应对即可快速恢复业务运转恢复正常秩序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值