3 ms·
Slide 24 says "Why Go? Multi-arch build without preprocessors." My understanding is that Docker is strongly tied to Linux by virtue of using Linux containers.
by millstone 13y ago
Slide 24 says "Why Go? Multi-arch build without preprocessors."
My understanding is that Docker is strongly tied to Linux by virtue of using Linux containers. So how does Docker benefit from the multi-arch build facilities of Go, if it only runs on Linux?
- vidarh 13y agoMaybe they want to be able to add other backends. But even remaining tied to Linux: Linux runs on a huge number of different architectures - i386, x86_64, mips, ppc, arm just for starters.
- millstone 13y agoBut Go runs on only three architectures. If the desire is to support Linux on whatever architecture, then Go is the wrong choice.
- ithkuil 13y agohttp://golang.org/doc/install/gccgo http://golang.org/doc/install/gccgo http://gcc.gnu.org/gcc-4.8/changes.html http://gcc.gnu.org/gcc-4.8/changes.html "GCC 4.8.2 provides a complete implementation of the Go 1.1.2 release." "[gcc] Go has been tested on GNU/Linux and Solaris platforms for various processors including x86, x86_64, PowerPC, SPARC, and Alpha. It may work on other platforms as well." The original compiler created by the Go team at Google, doesn't work on many platform. But Go is a language with many implementations of the compiler. Currently gccgo is the only other implementation I know which would be useful, but there is work on a llvm frontend too. Take into consideration that precisely because of the design choices behind the language as it's currently specified (focus on simplicity in the language and implementation, e.g. explicit lack of dynamic linking) it's reasonable to expect that your application will work on a different compiler (compared with c++, at least for those who remember more troubled times)
- jpetazzo 13y agoThere is a trade-off between "running anywhere" and "running mostly anywhere". I.e. going from 99% to 99.99% :-) The server-side component only runs on Linux for now, and while it's supported only on x86_64, people have confirmed that it could run on i386, and arm v6/v7/v8. Later releases will also target FreeBSD, Solaris, and possibly OS X. The client-side component already runs on OS X, and could possibly run on Windows as well. However, there is currently no interest at all in running Docker on AIX, HP/UX, Plan9; or on Sparc, Power, s390, or Mips platforms.
- jamescun 13y agoLXC does require Linux and x64 is the recommended architecture to run it on, however LXC can be built for other platforms (namely x86, x86-64, IA-64, PowerPC, SPARC, Itanium and ARM [1]) And just today there was a breakthrough in getting Docker running on the Raspberry Pi: https://news.ycombinator.com/item?id=6708565 https://news.ycombinator.com/item?id=6708565 [1] https://en.wikipedia.org/wiki/LXC https://en.wikipedia.org/wiki/LXC
- millstone 13y agoBut the Go compiler only has backends for three out of the seven architectures you listed. So this would seem to be a strike against Go. It looks like Docker provides binaries for only x86-64 Ubuntu. So slide 24 seems to be more of "we think this is cool in theory" rather than "this really helps us."
- justincormack 13y agoYes and I don't think there are image repositories for other architectures, though perhaps the pi thing may mean an arm repository turns up. It would be cool if IBM sponsored more powerpc ports of stuff. They do give free access to ppc machines, but they should have people who eg write go backends for ppc64.