Share data from one Kubernetes container to another inside same pod
I have two containers inside my Pod:
- Container A based on my own Dockerfile. Inside this Dockerfile, there is
COPY ./files /my-files
command. This image is inside my GitLab Docker registry. - Container B based on image from hub.docker.com.
I'd like to share data from Container A that are stored inside /my-files to Container B. I thought that I need to create a volume
(it's not a persisted data) inside this pod and volumeMounts
to the container.
Unfortunately when I add volumeMounts
to Container A with mountPath: /my-files
this directory is emptied and there are no files that were added when an image was created.
What should I do to keep this data and share it with Container B.
This is part of my Deployment.yaml file:
containers:
- name: Container-A
image: "my-gitlab-registry/my-image-a-with-copied-files"
volumeMounts:
- name: shared-data
mountPath: /my-files
- name: Container-B
image: "some-public-image"
volumeMounts:
- name: shared-data
mountPath: /files-from-container-a
volumes:
- name: shared-data
emptyDir: {}
kubernetes
add a comment |
I have two containers inside my Pod:
- Container A based on my own Dockerfile. Inside this Dockerfile, there is
COPY ./files /my-files
command. This image is inside my GitLab Docker registry. - Container B based on image from hub.docker.com.
I'd like to share data from Container A that are stored inside /my-files to Container B. I thought that I need to create a volume
(it's not a persisted data) inside this pod and volumeMounts
to the container.
Unfortunately when I add volumeMounts
to Container A with mountPath: /my-files
this directory is emptied and there are no files that were added when an image was created.
What should I do to keep this data and share it with Container B.
This is part of my Deployment.yaml file:
containers:
- name: Container-A
image: "my-gitlab-registry/my-image-a-with-copied-files"
volumeMounts:
- name: shared-data
mountPath: /my-files
- name: Container-B
image: "some-public-image"
volumeMounts:
- name: shared-data
mountPath: /files-from-container-a
volumes:
- name: shared-data
emptyDir: {}
kubernetes
1
When you mount inside a k8s container, the mounted volume will "hide" anything that already existed in that location. What kind of data is this? It sounds like either you need to create a configmap for it, or you need to copy it into both images before creating the pod & containers.
– superstator
Nov 28 '18 at 0:32
I'm creating a PHP app using PHP-FPM and Apache. The first container is based on PHP-FPM. I copy all data of application inside /var/www/html. The second one is Apache pointing to FPM. But both containers need same files inside /var/www/html directory. It's sad, that there is no "flag" telling to keep those files and copy inside mounted volume.
– Marcin
Nov 28 '18 at 10:33
Are you just wanting Apache to act as a reverse proxy for PHP-FPM? If so, the thing to do would be to use port mappings to let Apache talk to your PHP container, and not share any content directly. Your Apache container would get it's config from a configmap, and then make requests directly to your app container on some arbitrary port, like8080
.
– superstator
Nov 28 '18 at 19:19
1
If you really need to share static content between two containers, you need to either build that content into both images (in which case they can potentially share layers behind the scenes), or store that content in some other system like an S3 bucket, and then map that into your containers via volume mounts.
– superstator
Nov 28 '18 at 19:20
add a comment |
I have two containers inside my Pod:
- Container A based on my own Dockerfile. Inside this Dockerfile, there is
COPY ./files /my-files
command. This image is inside my GitLab Docker registry. - Container B based on image from hub.docker.com.
I'd like to share data from Container A that are stored inside /my-files to Container B. I thought that I need to create a volume
(it's not a persisted data) inside this pod and volumeMounts
to the container.
Unfortunately when I add volumeMounts
to Container A with mountPath: /my-files
this directory is emptied and there are no files that were added when an image was created.
What should I do to keep this data and share it with Container B.
This is part of my Deployment.yaml file:
containers:
- name: Container-A
image: "my-gitlab-registry/my-image-a-with-copied-files"
volumeMounts:
- name: shared-data
mountPath: /my-files
- name: Container-B
image: "some-public-image"
volumeMounts:
- name: shared-data
mountPath: /files-from-container-a
volumes:
- name: shared-data
emptyDir: {}
kubernetes
I have two containers inside my Pod:
- Container A based on my own Dockerfile. Inside this Dockerfile, there is
COPY ./files /my-files
command. This image is inside my GitLab Docker registry. - Container B based on image from hub.docker.com.
I'd like to share data from Container A that are stored inside /my-files to Container B. I thought that I need to create a volume
(it's not a persisted data) inside this pod and volumeMounts
to the container.
Unfortunately when I add volumeMounts
to Container A with mountPath: /my-files
this directory is emptied and there are no files that were added when an image was created.
What should I do to keep this data and share it with Container B.
This is part of my Deployment.yaml file:
containers:
- name: Container-A
image: "my-gitlab-registry/my-image-a-with-copied-files"
volumeMounts:
- name: shared-data
mountPath: /my-files
- name: Container-B
image: "some-public-image"
volumeMounts:
- name: shared-data
mountPath: /files-from-container-a
volumes:
- name: shared-data
emptyDir: {}
kubernetes
kubernetes
asked Nov 28 '18 at 0:25
MarcinMarcin
414
414
1
When you mount inside a k8s container, the mounted volume will "hide" anything that already existed in that location. What kind of data is this? It sounds like either you need to create a configmap for it, or you need to copy it into both images before creating the pod & containers.
– superstator
Nov 28 '18 at 0:32
I'm creating a PHP app using PHP-FPM and Apache. The first container is based on PHP-FPM. I copy all data of application inside /var/www/html. The second one is Apache pointing to FPM. But both containers need same files inside /var/www/html directory. It's sad, that there is no "flag" telling to keep those files and copy inside mounted volume.
– Marcin
Nov 28 '18 at 10:33
Are you just wanting Apache to act as a reverse proxy for PHP-FPM? If so, the thing to do would be to use port mappings to let Apache talk to your PHP container, and not share any content directly. Your Apache container would get it's config from a configmap, and then make requests directly to your app container on some arbitrary port, like8080
.
– superstator
Nov 28 '18 at 19:19
1
If you really need to share static content between two containers, you need to either build that content into both images (in which case they can potentially share layers behind the scenes), or store that content in some other system like an S3 bucket, and then map that into your containers via volume mounts.
– superstator
Nov 28 '18 at 19:20
add a comment |
1
When you mount inside a k8s container, the mounted volume will "hide" anything that already existed in that location. What kind of data is this? It sounds like either you need to create a configmap for it, or you need to copy it into both images before creating the pod & containers.
– superstator
Nov 28 '18 at 0:32
I'm creating a PHP app using PHP-FPM and Apache. The first container is based on PHP-FPM. I copy all data of application inside /var/www/html. The second one is Apache pointing to FPM. But both containers need same files inside /var/www/html directory. It's sad, that there is no "flag" telling to keep those files and copy inside mounted volume.
– Marcin
Nov 28 '18 at 10:33
Are you just wanting Apache to act as a reverse proxy for PHP-FPM? If so, the thing to do would be to use port mappings to let Apache talk to your PHP container, and not share any content directly. Your Apache container would get it's config from a configmap, and then make requests directly to your app container on some arbitrary port, like8080
.
– superstator
Nov 28 '18 at 19:19
1
If you really need to share static content between two containers, you need to either build that content into both images (in which case they can potentially share layers behind the scenes), or store that content in some other system like an S3 bucket, and then map that into your containers via volume mounts.
– superstator
Nov 28 '18 at 19:20
1
1
When you mount inside a k8s container, the mounted volume will "hide" anything that already existed in that location. What kind of data is this? It sounds like either you need to create a configmap for it, or you need to copy it into both images before creating the pod & containers.
– superstator
Nov 28 '18 at 0:32
When you mount inside a k8s container, the mounted volume will "hide" anything that already existed in that location. What kind of data is this? It sounds like either you need to create a configmap for it, or you need to copy it into both images before creating the pod & containers.
– superstator
Nov 28 '18 at 0:32
I'm creating a PHP app using PHP-FPM and Apache. The first container is based on PHP-FPM. I copy all data of application inside /var/www/html. The second one is Apache pointing to FPM. But both containers need same files inside /var/www/html directory. It's sad, that there is no "flag" telling to keep those files and copy inside mounted volume.
– Marcin
Nov 28 '18 at 10:33
I'm creating a PHP app using PHP-FPM and Apache. The first container is based on PHP-FPM. I copy all data of application inside /var/www/html. The second one is Apache pointing to FPM. But both containers need same files inside /var/www/html directory. It's sad, that there is no "flag" telling to keep those files and copy inside mounted volume.
– Marcin
Nov 28 '18 at 10:33
Are you just wanting Apache to act as a reverse proxy for PHP-FPM? If so, the thing to do would be to use port mappings to let Apache talk to your PHP container, and not share any content directly. Your Apache container would get it's config from a configmap, and then make requests directly to your app container on some arbitrary port, like
8080
.– superstator
Nov 28 '18 at 19:19
Are you just wanting Apache to act as a reverse proxy for PHP-FPM? If so, the thing to do would be to use port mappings to let Apache talk to your PHP container, and not share any content directly. Your Apache container would get it's config from a configmap, and then make requests directly to your app container on some arbitrary port, like
8080
.– superstator
Nov 28 '18 at 19:19
1
1
If you really need to share static content between two containers, you need to either build that content into both images (in which case they can potentially share layers behind the scenes), or store that content in some other system like an S3 bucket, and then map that into your containers via volume mounts.
– superstator
Nov 28 '18 at 19:20
If you really need to share static content between two containers, you need to either build that content into both images (in which case they can potentially share layers behind the scenes), or store that content in some other system like an S3 bucket, and then map that into your containers via volume mounts.
– superstator
Nov 28 '18 at 19:20
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53510307%2fshare-data-from-one-kubernetes-container-to-another-inside-same-pod%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53510307%2fshare-data-from-one-kubernetes-container-to-another-inside-same-pod%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
When you mount inside a k8s container, the mounted volume will "hide" anything that already existed in that location. What kind of data is this? It sounds like either you need to create a configmap for it, or you need to copy it into both images before creating the pod & containers.
– superstator
Nov 28 '18 at 0:32
I'm creating a PHP app using PHP-FPM and Apache. The first container is based on PHP-FPM. I copy all data of application inside /var/www/html. The second one is Apache pointing to FPM. But both containers need same files inside /var/www/html directory. It's sad, that there is no "flag" telling to keep those files and copy inside mounted volume.
– Marcin
Nov 28 '18 at 10:33
Are you just wanting Apache to act as a reverse proxy for PHP-FPM? If so, the thing to do would be to use port mappings to let Apache talk to your PHP container, and not share any content directly. Your Apache container would get it's config from a configmap, and then make requests directly to your app container on some arbitrary port, like
8080
.– superstator
Nov 28 '18 at 19:19
1
If you really need to share static content between two containers, you need to either build that content into both images (in which case they can potentially share layers behind the scenes), or store that content in some other system like an S3 bucket, and then map that into your containers via volume mounts.
– superstator
Nov 28 '18 at 19:20