我是 Docker 的新手,可能听不懂。
我有一个app
容器和一个dockerfile
。
我想在ssh-client
容器中安装app
。
我希望能够运行ssh
命令从app
容器中获取一些外部IP。
我知道最简单的方法是添加
RUN apk update && apk add openssh-client bash
到我的dockerfile
,但我想使用一些现成的图像,所以我的所有容器都可以使用相同的图像。
是否可以这样做?
答案 0 :(得分:2)
如果您搜索所有公共图像所在的dockerhub,您会发现所有“ssh-client”流行图像都只是建立在高山之上并按照您描述的方式安装openssh-client
。
因此使用这些现有图像没有明显的好处。只需通过以下方式安装ssh-client:
RUN apk update && apk-install openssh-client
答案 1 :(得分:1)
撰写Dockerfile
(https://docs.docker.com/engine/reference/builder/):
FROM alpine:latest
# install ssh-client and bash
RUN apk --no-cache add openssh-client bash
# example ssh usage to print version
ENTRYPOINT ["ssh", "-V"]
使用以下代码构建并运行它:docker build -t ssh . && docker run -t ssh ssh
或者使用Docker-Compose。
使用docker build
构建后,您可以在Dockerfiles中的其他项目中重用ssh Docker镜像。
FROM ssh
...
使用Docker-Compose docker-compose.yml
:
version: '3'
services:
ssh:
build: .
image: ssh
您可以根据需要在撰写文件中添加多个服务。 上面的docker compose文件使用上面的Dockerfile来构建你的ssh docker镜像。 请参阅撰写文件参考:https://docs.docker.com/compose/compose-file/