Ced*_*ult 7 docker docker-compose
我有几个由经典Docker命令启动的运行容器.这些容器使用的是Docker网络,也是"手动"创建的:
docker network create simple-network
docker run -d \
--name docker-registry \
--net=simple-network \
-p 5000:5000 \
-v [...] \
registry:2.3.0
docker run -d \
--name docker-registry-web \
--net=simple-network \
-p 8080 \
-v [...] \
hyper/docker-registry-web
docker run -d \
--name nginx \
--net=simple-network \
-p 80:80 \
-p 443:443 \
-v [...] \
nginx:1.9.8
Run Code Online (Sandbox Code Playgroud)
我想使用Docker Compose来运行这些容器,因为它更容易管理.
是否可以将这些容器迁移到Docker Compose,如下所示,或者只能使用新的容器进行组合?
我希望在迁移过程中使用相同的卷!停机不是问题.
泊坞窗,compose.yml
version: '2'
docker-registry:
image: registry:2.3.0
ports:
- "5000:5000"
volumes:
- [...]
docker-registry-web:
image: hyper/docker-registry-web
expose:
- "8080"
volumes:
- [...]
nginx:
image: nginx:1.9.8
ports:
- "80:80"
- "443:443"
volumes:
- [...]
Run Code Online (Sandbox Code Playgroud)
要重新使用现有网络,您可以使用
networks:
default:
external:
name: simple-network
Run Code Online (Sandbox Code Playgroud)
要重新使用卷,它取决于它们的卷类型.如果它们是命名卷,您可以执行类似的操作:
volumes:
data:
external:
name: the_name_of_the_volume
Run Code Online (Sandbox Code Playgroud)
然后volumes: [data],您将在服务中使用它.
如果它们是主机卷,那么它非常简单,只需使用相同的配置即可.
如果它们是未命名的卷,则可以将卷id用作外部卷(与使用命名卷的方式相同).
不可能重新使用容器.您可以让Compose接管由docker创建的容器,但是他们需要正确labels使用它们.查找标签的最简单方法是docker inspect通过compose创建的容器来查看键/值.由于您无论如何都必须重新创建容器以应用标签,因此可能更容易停止它们并up撰写.
| 归档时间: |
|
| 查看次数: |
3036 次 |
| 最近记录: |