Communication between Windows Host and Linux Docker Container
I have the following problem. I have a piece of software on a windows host system, which emulates the com-interface at this computer. Now i would like to provide a API / Socket / Pipe in this software, which accepts a string which is transfered over LAN.
The submit software should be a .net core webapplication, which is hosted in kubernetes as a docker container (Linux).
Which kind of technology could i use to speak between a Linux Container and a Windows Host.
- Named Pipes -> I think they are not available under Linux?
- Sockets?
- Try to open a webserver on the windows host to get access via http ?
Whats your ideas and why do you prefer a solution?
linux windows docker .net-core
add a comment |
I have the following problem. I have a piece of software on a windows host system, which emulates the com-interface at this computer. Now i would like to provide a API / Socket / Pipe in this software, which accepts a string which is transfered over LAN.
The submit software should be a .net core webapplication, which is hosted in kubernetes as a docker container (Linux).
Which kind of technology could i use to speak between a Linux Container and a Windows Host.
- Named Pipes -> I think they are not available under Linux?
- Sockets?
- Try to open a webserver on the windows host to get access via http ?
Whats your ideas and why do you prefer a solution?
linux windows docker .net-core
You could use many different ways. A webservice is a fine way of doing it as you said. Named pipes do not go outside of computers, virtual or or otherwise, so that is right out.
– Prof. Falken
Nov 22 '18 at 9:18
add a comment |
I have the following problem. I have a piece of software on a windows host system, which emulates the com-interface at this computer. Now i would like to provide a API / Socket / Pipe in this software, which accepts a string which is transfered over LAN.
The submit software should be a .net core webapplication, which is hosted in kubernetes as a docker container (Linux).
Which kind of technology could i use to speak between a Linux Container and a Windows Host.
- Named Pipes -> I think they are not available under Linux?
- Sockets?
- Try to open a webserver on the windows host to get access via http ?
Whats your ideas and why do you prefer a solution?
linux windows docker .net-core
I have the following problem. I have a piece of software on a windows host system, which emulates the com-interface at this computer. Now i would like to provide a API / Socket / Pipe in this software, which accepts a string which is transfered over LAN.
The submit software should be a .net core webapplication, which is hosted in kubernetes as a docker container (Linux).
Which kind of technology could i use to speak between a Linux Container and a Windows Host.
- Named Pipes -> I think they are not available under Linux?
- Sockets?
- Try to open a webserver on the windows host to get access via http ?
Whats your ideas and why do you prefer a solution?
linux windows docker .net-core
linux windows docker .net-core
edited Nov 20 '18 at 7:23
Lukas Hieronimus Adler
asked Nov 20 '18 at 7:17
Lukas Hieronimus AdlerLukas Hieronimus Adler
4761725
4761725
You could use many different ways. A webservice is a fine way of doing it as you said. Named pipes do not go outside of computers, virtual or or otherwise, so that is right out.
– Prof. Falken
Nov 22 '18 at 9:18
add a comment |
You could use many different ways. A webservice is a fine way of doing it as you said. Named pipes do not go outside of computers, virtual or or otherwise, so that is right out.
– Prof. Falken
Nov 22 '18 at 9:18
You could use many different ways. A webservice is a fine way of doing it as you said. Named pipes do not go outside of computers, virtual or or otherwise, so that is right out.
– Prof. Falken
Nov 22 '18 at 9:18
You could use many different ways. A webservice is a fine way of doing it as you said. Named pipes do not go outside of computers, virtual or or otherwise, so that is right out.
– Prof. Falken
Nov 22 '18 at 9:18
add a comment |
1 Answer
1
active
oldest
votes
Linux do have named pipes, though the exact semantic of different operations vary, but the problem you'll have is that named pipe cannot be used to communicate between different systems. Named pipe is an inter-process communication for process running on the same machine. Note that Windows Host and Linux Guest are considered two separate systems here even when they live in the same physical machines.
TCP is the most general purpose form of sockets and is the standard way to connect between two OSes. If you don't know why you want to use the other protocols, TCP is usually a good bet that it'll be able to connect almost everything.
Now the only problem is what application level protocol you want to use, and whether you want to add any security layer (i.e. TLS) to encrypt and authenticate the connection between the machines. If you have a simple service that only needs to transmit simple strings, then you probably can just use TCP/TLS socket directly, but if you want to benefit from standardized phraseology, techniques, and libraries and frameworks for various things like communicating request and responses statuses, authentication, optimistic locking, caching, proxying, session management, arbitrary length stream encoding, etc, then building your communication on top of HTTP/HTTPS is a sensible thing to do. You'll find that a lot of services nowadays are built as a web service as it makes things a lot simpler when you need to scale and make use of those features.
@LukasHieronimusAdler: nope, doesn't change my answer one bit. If your machine is capable of running Windows, it's definitely way more than capable of running a simple TCP/HTTP server. There's likely many such services already running on your machine providing various system services. You can fairly easily write a standalone server in nearly any language/platform of your choosing, it's simpler than you think. I think you might be overthinking this a bit. A server is simply a program that listens for requests from another program/machine.
– Lie Ryan
Nov 22 '18 at 13:37
Okay and how could i do it? So i need a Windows Service for Windows 7 / 10 which creates his own server. Which kind of "project" should i choose in .NET for this? WCF , .NET Standard, Windows Desktop? And could you give me a reference?
– Lukas Hieronimus Adler
Nov 22 '18 at 14:40
Any of them can be used to write a server, though for a simple server you probably won't need a GUI project. This tutorial explains the entire process of writing a simple server that uses a database and an in-browser client.
– Lie Ryan
Nov 22 '18 at 15:20
add a comment |
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%2f53388011%2fcommunication-between-windows-host-and-linux-docker-container%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Linux do have named pipes, though the exact semantic of different operations vary, but the problem you'll have is that named pipe cannot be used to communicate between different systems. Named pipe is an inter-process communication for process running on the same machine. Note that Windows Host and Linux Guest are considered two separate systems here even when they live in the same physical machines.
TCP is the most general purpose form of sockets and is the standard way to connect between two OSes. If you don't know why you want to use the other protocols, TCP is usually a good bet that it'll be able to connect almost everything.
Now the only problem is what application level protocol you want to use, and whether you want to add any security layer (i.e. TLS) to encrypt and authenticate the connection between the machines. If you have a simple service that only needs to transmit simple strings, then you probably can just use TCP/TLS socket directly, but if you want to benefit from standardized phraseology, techniques, and libraries and frameworks for various things like communicating request and responses statuses, authentication, optimistic locking, caching, proxying, session management, arbitrary length stream encoding, etc, then building your communication on top of HTTP/HTTPS is a sensible thing to do. You'll find that a lot of services nowadays are built as a web service as it makes things a lot simpler when you need to scale and make use of those features.
@LukasHieronimusAdler: nope, doesn't change my answer one bit. If your machine is capable of running Windows, it's definitely way more than capable of running a simple TCP/HTTP server. There's likely many such services already running on your machine providing various system services. You can fairly easily write a standalone server in nearly any language/platform of your choosing, it's simpler than you think. I think you might be overthinking this a bit. A server is simply a program that listens for requests from another program/machine.
– Lie Ryan
Nov 22 '18 at 13:37
Okay and how could i do it? So i need a Windows Service for Windows 7 / 10 which creates his own server. Which kind of "project" should i choose in .NET for this? WCF , .NET Standard, Windows Desktop? And could you give me a reference?
– Lukas Hieronimus Adler
Nov 22 '18 at 14:40
Any of them can be used to write a server, though for a simple server you probably won't need a GUI project. This tutorial explains the entire process of writing a simple server that uses a database and an in-browser client.
– Lie Ryan
Nov 22 '18 at 15:20
add a comment |
Linux do have named pipes, though the exact semantic of different operations vary, but the problem you'll have is that named pipe cannot be used to communicate between different systems. Named pipe is an inter-process communication for process running on the same machine. Note that Windows Host and Linux Guest are considered two separate systems here even when they live in the same physical machines.
TCP is the most general purpose form of sockets and is the standard way to connect between two OSes. If you don't know why you want to use the other protocols, TCP is usually a good bet that it'll be able to connect almost everything.
Now the only problem is what application level protocol you want to use, and whether you want to add any security layer (i.e. TLS) to encrypt and authenticate the connection between the machines. If you have a simple service that only needs to transmit simple strings, then you probably can just use TCP/TLS socket directly, but if you want to benefit from standardized phraseology, techniques, and libraries and frameworks for various things like communicating request and responses statuses, authentication, optimistic locking, caching, proxying, session management, arbitrary length stream encoding, etc, then building your communication on top of HTTP/HTTPS is a sensible thing to do. You'll find that a lot of services nowadays are built as a web service as it makes things a lot simpler when you need to scale and make use of those features.
@LukasHieronimusAdler: nope, doesn't change my answer one bit. If your machine is capable of running Windows, it's definitely way more than capable of running a simple TCP/HTTP server. There's likely many such services already running on your machine providing various system services. You can fairly easily write a standalone server in nearly any language/platform of your choosing, it's simpler than you think. I think you might be overthinking this a bit. A server is simply a program that listens for requests from another program/machine.
– Lie Ryan
Nov 22 '18 at 13:37
Okay and how could i do it? So i need a Windows Service for Windows 7 / 10 which creates his own server. Which kind of "project" should i choose in .NET for this? WCF , .NET Standard, Windows Desktop? And could you give me a reference?
– Lukas Hieronimus Adler
Nov 22 '18 at 14:40
Any of them can be used to write a server, though for a simple server you probably won't need a GUI project. This tutorial explains the entire process of writing a simple server that uses a database and an in-browser client.
– Lie Ryan
Nov 22 '18 at 15:20
add a comment |
Linux do have named pipes, though the exact semantic of different operations vary, but the problem you'll have is that named pipe cannot be used to communicate between different systems. Named pipe is an inter-process communication for process running on the same machine. Note that Windows Host and Linux Guest are considered two separate systems here even when they live in the same physical machines.
TCP is the most general purpose form of sockets and is the standard way to connect between two OSes. If you don't know why you want to use the other protocols, TCP is usually a good bet that it'll be able to connect almost everything.
Now the only problem is what application level protocol you want to use, and whether you want to add any security layer (i.e. TLS) to encrypt and authenticate the connection between the machines. If you have a simple service that only needs to transmit simple strings, then you probably can just use TCP/TLS socket directly, but if you want to benefit from standardized phraseology, techniques, and libraries and frameworks for various things like communicating request and responses statuses, authentication, optimistic locking, caching, proxying, session management, arbitrary length stream encoding, etc, then building your communication on top of HTTP/HTTPS is a sensible thing to do. You'll find that a lot of services nowadays are built as a web service as it makes things a lot simpler when you need to scale and make use of those features.
Linux do have named pipes, though the exact semantic of different operations vary, but the problem you'll have is that named pipe cannot be used to communicate between different systems. Named pipe is an inter-process communication for process running on the same machine. Note that Windows Host and Linux Guest are considered two separate systems here even when they live in the same physical machines.
TCP is the most general purpose form of sockets and is the standard way to connect between two OSes. If you don't know why you want to use the other protocols, TCP is usually a good bet that it'll be able to connect almost everything.
Now the only problem is what application level protocol you want to use, and whether you want to add any security layer (i.e. TLS) to encrypt and authenticate the connection between the machines. If you have a simple service that only needs to transmit simple strings, then you probably can just use TCP/TLS socket directly, but if you want to benefit from standardized phraseology, techniques, and libraries and frameworks for various things like communicating request and responses statuses, authentication, optimistic locking, caching, proxying, session management, arbitrary length stream encoding, etc, then building your communication on top of HTTP/HTTPS is a sensible thing to do. You'll find that a lot of services nowadays are built as a web service as it makes things a lot simpler when you need to scale and make use of those features.
answered Nov 22 '18 at 11:07
Lie RyanLie Ryan
44.7k968122
44.7k968122
@LukasHieronimusAdler: nope, doesn't change my answer one bit. If your machine is capable of running Windows, it's definitely way more than capable of running a simple TCP/HTTP server. There's likely many such services already running on your machine providing various system services. You can fairly easily write a standalone server in nearly any language/platform of your choosing, it's simpler than you think. I think you might be overthinking this a bit. A server is simply a program that listens for requests from another program/machine.
– Lie Ryan
Nov 22 '18 at 13:37
Okay and how could i do it? So i need a Windows Service for Windows 7 / 10 which creates his own server. Which kind of "project" should i choose in .NET for this? WCF , .NET Standard, Windows Desktop? And could you give me a reference?
– Lukas Hieronimus Adler
Nov 22 '18 at 14:40
Any of them can be used to write a server, though for a simple server you probably won't need a GUI project. This tutorial explains the entire process of writing a simple server that uses a database and an in-browser client.
– Lie Ryan
Nov 22 '18 at 15:20
add a comment |
@LukasHieronimusAdler: nope, doesn't change my answer one bit. If your machine is capable of running Windows, it's definitely way more than capable of running a simple TCP/HTTP server. There's likely many such services already running on your machine providing various system services. You can fairly easily write a standalone server in nearly any language/platform of your choosing, it's simpler than you think. I think you might be overthinking this a bit. A server is simply a program that listens for requests from another program/machine.
– Lie Ryan
Nov 22 '18 at 13:37
Okay and how could i do it? So i need a Windows Service for Windows 7 / 10 which creates his own server. Which kind of "project" should i choose in .NET for this? WCF , .NET Standard, Windows Desktop? And could you give me a reference?
– Lukas Hieronimus Adler
Nov 22 '18 at 14:40
Any of them can be used to write a server, though for a simple server you probably won't need a GUI project. This tutorial explains the entire process of writing a simple server that uses a database and an in-browser client.
– Lie Ryan
Nov 22 '18 at 15:20
@LukasHieronimusAdler: nope, doesn't change my answer one bit. If your machine is capable of running Windows, it's definitely way more than capable of running a simple TCP/HTTP server. There's likely many such services already running on your machine providing various system services. You can fairly easily write a standalone server in nearly any language/platform of your choosing, it's simpler than you think. I think you might be overthinking this a bit. A server is simply a program that listens for requests from another program/machine.
– Lie Ryan
Nov 22 '18 at 13:37
@LukasHieronimusAdler: nope, doesn't change my answer one bit. If your machine is capable of running Windows, it's definitely way more than capable of running a simple TCP/HTTP server. There's likely many such services already running on your machine providing various system services. You can fairly easily write a standalone server in nearly any language/platform of your choosing, it's simpler than you think. I think you might be overthinking this a bit. A server is simply a program that listens for requests from another program/machine.
– Lie Ryan
Nov 22 '18 at 13:37
Okay and how could i do it? So i need a Windows Service for Windows 7 / 10 which creates his own server. Which kind of "project" should i choose in .NET for this? WCF , .NET Standard, Windows Desktop? And could you give me a reference?
– Lukas Hieronimus Adler
Nov 22 '18 at 14:40
Okay and how could i do it? So i need a Windows Service for Windows 7 / 10 which creates his own server. Which kind of "project" should i choose in .NET for this? WCF , .NET Standard, Windows Desktop? And could you give me a reference?
– Lukas Hieronimus Adler
Nov 22 '18 at 14:40
Any of them can be used to write a server, though for a simple server you probably won't need a GUI project. This tutorial explains the entire process of writing a simple server that uses a database and an in-browser client.
– Lie Ryan
Nov 22 '18 at 15:20
Any of them can be used to write a server, though for a simple server you probably won't need a GUI project. This tutorial explains the entire process of writing a simple server that uses a database and an in-browser client.
– Lie Ryan
Nov 22 '18 at 15:20
add a comment |
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%2f53388011%2fcommunication-between-windows-host-and-linux-docker-container%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
You could use many different ways. A webservice is a fine way of doing it as you said. Named pipes do not go outside of computers, virtual or or otherwise, so that is right out.
– Prof. Falken
Nov 22 '18 at 9:18