podman equivalent for docker-compose?
was extolling the virtues of podman to a colleague, who seemed interested but asked what the podman-based alternative was for "docker compose". rather than mislead her, i thought i would ask the experts. thoughts? rday -- ======================================================================== Robert P. J. Day Ottawa, Ontario, CANADA http://crashcourse.ca Twitter: http://twitter.com/rpjday LinkedIn: http://ca.linkedin.com/in/rpjday ========================================================================
Hi Robert, I'm not an expert at all. But I had this question a few days ago. The most common tool seems to be https://github.com/containers/podman-compose. Unfortunately, in my case it was not able to replace docker's compose completely¹. But podman-compose has a option to trace what it is trying to do. This helped me, to write a simple script, which is doing the same job as the initial composer file. Uwe ¹) Sorry I haven't documented the problem well. As far as I remember, the problem was that composer creates/runs standalone containers with different IPs and an implicit DNS service (container name -> ip). podman-compose creates a pod, which means all containers in this pod share the IP 'localhost'. Im my case this was a problem, because the application on one container was looking for resources on the host 'mysql'.
Depending on the complexity of the task, podman generate kube and podman play kube may also be an answer. https://developers.redhat.com/blog/2019/01/29/podman-kubernetes-yaml/ While most of the article talks about replaying on a kube-basaed runtime, one of the last paragraphs talks about replaying locally. On Fri, 2019-08-30 at 13:09 +0200, Uwe Reh wrote:
Hi Robert,
I'm not an expert at all. But I had this question a few days ago.
The most common tool seems to be https://github.com/containers/podman-compose.
Unfortunately, in my case it was not able to replace docker's compose completely¹. But podman-compose has a option to trace what it is trying to do. This helped me, to write a simple script, which is doing the same job as the initial composer file.
Uwe
¹) Sorry I haven't documented the problem well. As far as I remember, the problem was that composer creates/runs standalone containers with different IPs and an implicit DNS service (container name -> ip). podman-compose creates a pod, which means all containers in this pod share the IP 'localhost'. Im my case this was a problem, because the application on one container was looking for resources on the host 'mysql'.
_______________________________________________ Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Brent is also working on implementing a strategy so that containers can communicate with each other via Names. We are looking at enhancing CNI to support running a DNSMasq/per network device and registering the containers hostnames with it. On 8/30/19 7:41 AM, Brent Baude wrote:
Depending on the complexity of the task, podman generate kube and podman play kube may also be an answer.
https://developers.redhat.com/blog/2019/01/29/podman-kubernetes-yaml/
While most of the article talks about replaying on a kube-basaed runtime, one of the last paragraphs talks about replaying locally.
On Fri, 2019-08-30 at 13:09 +0200, Uwe Reh wrote:
Hi Robert,
I'm not an expert at all. But I had this question a few days ago.
The most common tool seems to be https://github.com/containers/podman-compose.
Unfortunately, in my case it was not able to replace docker's compose completely¹. But podman-compose has a option to trace what it is trying to do. This helped me, to write a simple script, which is doing the same job as the initial composer file.
Uwe
¹) Sorry I haven't documented the problem well. As far as I remember, the problem was that composer creates/runs standalone containers with different IPs and an implicit DNS service (container name -> ip). podman-compose creates a pod, which means all containers in this pod share the IP 'localhost'. Im my case this was a problem, because the application on one container was looking for resources on the host 'mysql'.
_______________________________________________ Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Hi Brent, do you really think, that your article is an appropriate answer to the initial question? I suppose not. Surely you've mad a good job for people which are familiar with Kubernets. For beginners like Robert and me, it's some kind of chinese. Just try to imaging: - you are relatively new in the area of containers. - you have heard just enough about Kubernets, to realize that it's out of scope for your needs. - you have read about Kubernet's 'kompose' and have seen your article. A beginner like me, may think, "Ok, sounds reasonable". But this leads into an dead end. 'kompose' creates a lot of nice detailed configuration files, but none of them seems to be suitable for podman... Without any experience or deeper knowledge about Kubernet, I resigned. Uwe PS. Maybe, you could write a detailed howto for the new podman pages. Am 30.08.19 um 13:41 schrieb Brent Baude:
Depending on the complexity of the task, podman generate kube and podman play kube may also be an answer.
https://developers.redhat.com/blog/2019/01/29/podman-kubernetes-yaml/
While most of the article talks about replaying on a kube-basaed runtime, one of the last paragraphs talks about replaying locally.
On Fri, 2019-08-30 at 13:09 +0200, Uwe Reh wrote:
Hi Robert,
I'm not an expert at all. But I had this question a few days ago.
The most common tool seems to be https://github.com/containers/podman-compose.
Unfortunately, in my case it was not able to replace docker's compose completely¹. But podman-compose has a option to trace what it is trying to do. This helped me, to write a simple script, which is doing the same job as the initial composer file.
Uwe
¹) Sorry I haven't documented the problem well. As far as I remember, the problem was that composer creates/runs standalone containers with different IPs and an implicit DNS service (container name -> ip). podman-compose creates a pod, which means all containers in this pod share the IP 'localhost'. Im my case this was a problem, because the application on one container was looking for resources on the host 'mysql'.
_______________________________________________ Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Uwe, The opensource community is responding to the need for podman-compose in github.com/containers/podman-compose. The issue with docker-compose is it is huge and we don't have the engineering staff to work and respond to all requests for support on compose. Our team is goaled at supporting the traditional container work loads on a single node. And helping people move to the multi-node containers via Kubernetes and OpenShift. We work with the community to support other features like compose and would not be against adding features provided by the community to better integrate podman into the compose world, but we don't have the time or staff to do the work ourselves. As far as documenting how to move a traditional container workload to Kubernetes, we would be interested in this. On 9/2/19 4:09 AM, Uwe Reh wrote:
Hi Brent,
do you really think, that your article is an appropriate answer to the initial question? I suppose not.
Surely you've mad a good job for people which are familiar with Kubernets. For beginners like Robert and me, it's some kind of chinese.
Just try to imaging: - you are relatively new in the area of containers. - you have heard just enough about Kubernets, to realize that it's out of scope for your needs. - you have read about Kubernet's 'kompose' and have seen your article.
A beginner like me, may think, "Ok, sounds reasonable". But this leads into an dead end. 'kompose' creates a lot of nice detailed configuration files, but none of them seems to be suitable for podman... Without any experience or deeper knowledge about Kubernet, I resigned.
Uwe
PS. Maybe, you could write a detailed howto for the new podman pages.
Am 30.08.19 um 13:41 schrieb Brent Baude:
Depending on the complexity of the task, podman generate kube and podman play kube may also be an answer.
https://developers.redhat.com/blog/2019/01/29/podman-kubernetes-yaml/
While most of the article talks about replaying on a kube-basaed runtime, one of the last paragraphs talks about replaying locally.
On Fri, 2019-08-30 at 13:09 +0200, Uwe Reh wrote:
Hi Robert,
I'm not an expert at all. But I had this question a few days ago.
The most common tool seems to be https://github.com/containers/podman-compose.
Unfortunately, in my case it was not able to replace docker's compose completely¹. But podman-compose has a option to trace what it is trying to do. This helped me, to write a simple script, which is doing the same job as the initial composer file.
Uwe
¹) Sorry I haven't documented the problem well. As far as I remember, the problem was that composer creates/runs standalone containers with different IPs and an implicit DNS service (container name -> ip). podman-compose creates a pod, which means all containers in this pod share the IP 'localhost'. Im my case this was a problem, because the application on one container was looking for resources on the host 'mysql'.
_______________________________________________ Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
_______________________________________________ Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Uwe, I do think my response is applicable. I'm sorry you feel differently. To use podman generate kube and podman play kube, you don't need to know any kubernetes. Podman generate simply takes your container or pod and "records" it in kube yaml; and podman play simply replays it the way it was recorded. You don't need to have any kubernetes knowledge. That said, you are correct that it is a different workflow and does not cover all container and pod abilities. We are always trying to close the gap there. I wish you the best of luck! Brent On Mon, 2019-09-02 at 10:09 +0200, Uwe Reh wrote:
Hi Brent,
do you really think, that your article is an appropriate answer to the initial question? I suppose not.
Surely you've mad a good job for people which are familiar with Kubernets. For beginners like Robert and me, it's some kind of chinese.
Just try to imaging: - you are relatively new in the area of containers. - you have heard just enough about Kubernets, to realize that it's out of scope for your needs. - you have read about Kubernet's 'kompose' and have seen your article.
A beginner like me, may think, "Ok, sounds reasonable". But this leads into an dead end. 'kompose' creates a lot of nice detailed configuration files, but none of them seems to be suitable for podman... Without any experience or deeper knowledge about Kubernet, I resigned.
Uwe
PS. Maybe, you could write a detailed howto for the new podman pages.
Am 30.08.19 um 13:41 schrieb Brent Baude:
Depending on the complexity of the task, podman generate kube and podman play kube may also be an answer.
https://developers.redhat.com/blog/2019/01/29/podman-kubernetes-yaml/
While most of the article talks about replaying on a kube-basaed runtime, one of the last paragraphs talks about replaying locally.
On Fri, 2019-08-30 at 13:09 +0200, Uwe Reh wrote:
Hi Robert,
I'm not an expert at all. But I had this question a few days ago.
The most common tool seems to be https://github.com/containers/podman-compose.
Unfortunately, in my case it was not able to replace docker's compose completely¹. But podman-compose has a option to trace what it is trying to do. This helped me, to write a simple script, which is doing the same job as the initial composer file.
Uwe
¹) Sorry I haven't documented the problem well. As far as I remember, the problem was that composer creates/runs standalone containers with different IPs and an implicit DNS service (container name -> ip). podman-compose creates a pod, which means all containers in this pod share the IP 'localhost'. Im my case this was a problem, because the application on one container was looking for resources on the host 'mysql'.
_______________________________________________ Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
_______________________________________________ Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
Hi Brent, Sorry if my provocation wasn't that small, I intended to. Podman is for a newbie like English for a none native speaker. It is easy to do first steps, but until you are really experienced there are lots of traps to step in. The point I wanted to express was, "It is nice that podman plays kube.yaml. But how to get the file to play?" - There seem to bee no automatic way to translate ONE composer.yaml into ONE kube.yaml. 'Kubernetes kompose' generates multiple and quire verbose files. - If someone is able to write his own kube.yaml, he will have probably no more need for help in converting a composer file. Again, it was never my intention to criticize your work. But sometimes even 'good men' do forget that others may not have the same full featured background of knowledge. Uwe Am 09.09.19 um 16:23 schrieb Brent Baude:
Uwe,
I do think my response is applicable. I'm sorry you feel differently. To use podman generate kube and podman play kube, you don't need to know any kubernetes. Podman generate simply takes your container or pod and "records" it in kube yaml; and podman play simply replays it the way it was recorded. You don't need to have any kubernetes knowledge.
That said, you are correct that it is a different workflow and does not cover all container and pod abilities. We are always trying to close the gap there.
I wish you the best of luck!
Uwe, Thanks for the feedback. We have definitely been looking at and thinking about how to ingest Compose yaml. The biggest challenge is standardization. There's no open standard for Compose. Even though it's easy to use, it's basically a trap in that it leads you down a path for multi-container orchestration that is only used by Docker Inc. Everybody else is standardizing on Kube yaml, and that appears to be the direction of the future (even though people are still adopting Compose because it's easy). Basically, we have a race condition where some people are adopting Compose, or already have Compose yaml, and the rest of the world is moving to Kube yaml. Compose yaml is easier, Kubernetes is more powerful. It's a really, really tough situation and one of our #1 requests from the community. We took a deep look, talked about it a LOT, and decided that "podman generate kube" and "podman play kube" was the closest we could come to giving users: 1. something easy 2. Something compatible with where the world is going 3. Bridges the gap getting from "podman run" to "kubectl create -f kube.yaml" (which admittedly is painful for a lot of people) 4. Follows open standards 5. Doesn't leave people on a dead end path All that said, we are still looking at the possibility of a "podman play compose" which would obviously give you an easier path from Compose to Kube. The problem is, that sounds really, really good, but it's much harder to do in reality :-) We need a really good Compose library, and a way to translate that will be sane. Mileage will definitely vary if we ever implement that solution... Best Regards Scott M On Wed, Sep 11, 2019 at 11:04 AM Uwe Reh <reh@hebis.uni-frankfurt.de> wrote:
Hi Brent,
Sorry if my provocation wasn't that small, I intended to.
Podman is for a newbie like English for a none native speaker. It is easy to do first steps, but until you are really experienced there are lots of traps to step in.
The point I wanted to express was, "It is nice that podman plays kube.yaml. But how to get the file to play?" - There seem to bee no automatic way to translate ONE composer.yaml into ONE kube.yaml. 'Kubernetes kompose' generates multiple and quire verbose files. - If someone is able to write his own kube.yaml, he will have probably no more need for help in converting a composer file.
Again, it was never my intention to criticize your work. But sometimes even 'good men' do forget that others may not have the same full featured background of knowledge.
Uwe
Am 09.09.19 um 16:23 schrieb Brent Baude:
Uwe,
I do think my response is applicable. I'm sorry you feel differently. To use podman generate kube and podman play kube, you don't need to know any kubernetes. Podman generate simply takes your container or pod and "records" it in kube yaml; and podman play simply replays it the way it was recorded. You don't need to have any kubernetes knowledge.
That said, you are correct that it is a different workflow and does not cover all container and pod abilities. We are always trying to close the gap there.
I wish you the best of luck!
Podman mailing list -- podman@lists.podman.io To unsubscribe send an email to podman-leave@lists.podman.io
-- -- Scott McCarty, RHCA Product Management - Containers, Red Hat Enterprise Linux & OpenShift Email: smccarty@redhat.com Phone: 312-660-3535 Cell: 330-807-1043 Web: http://crunchtools.com Have questions on Red Hat UBI? Check out the official FAQ: https://red.ht/2yaUcez
participants (5)
-
Brent Baude -
Daniel Walsh -
Robert P. J. Day -
Scott McCarty -
Uwe Reh