Summary: | sysutils/docker-freebsd: Cannot run docker run hello-world | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Ports & Packages | Reporter: | Dave Barnes <phpdave11> | ||||||
Component: | Individual Port(s) | Assignee: | Jochen Neumeister <joneum> | ||||||
Status: | Closed FIXED | ||||||||
Severity: | Affects Many People | CC: | 0mp, amutu, bugs.freebsd.org, ehrlich, freebsd, joneum, kappei84, kirillrdy, lantw44, mfechner, navid, paullus325, phpdave11, root, sanjaku8, vfontanella | ||||||
Priority: | --- | Keywords: | needs-qa, patch, regression | ||||||
Version: | Latest | Flags: | linimon:
maintainer-feedback?
(amutu) |
||||||
Hardware: | amd64 | ||||||||
OS: | Any | ||||||||
Attachments: |
|
Description
Dave Barnes
2018-04-18 18:00:24 UTC
I see the same behavior. # docker run hello-world Error response from daemon: json: cannot set embedded pointer to unexported struct: runconfig.hostConfigWrapper FreeBSD damogran.local 11.2-PRERELEASE FreeBSD 11.2-PRERELEASE #0 r333008: Thu Apr 26 16:34:42 UTC 2018 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 Seeing the same. Can we mark this port as BROKEN to not trick people into thinking that Docker works on FreeBSD? p.s.: I've built docker-freebsd from ports (using synth), on FreeBSD 11.1-RELEASE-p10 (x64). I'm having the same problem after install through pkg install docker-freebsd. (not ports) FreeBSD 11.2-RC2 FreeBSD 11.2-RC2 #0 r334861: Sat Jun 9 03:23:08 UTC 2018 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 The problems start when trying to pull the images: % docker pull centos latest: Pulling from centos 29466d114cd8: Extracting [========> ] 12.26 MB/74.69 MB b298d692482d: Download complete 88ec626ba223: Download complete Pulling repository centos Repository not found After trying another image: % docker pull auchida/freebsd latest: Pulling from auchida/freebsd d5732e76584a: Pull complete a2b331a1c598: Pull complete da76cd0d865f: Pull complete 3690474eb5b4: Already exists Digest: sha256:6dba3de9a41fd4a392864ac5150b059dc3410e6d98cdda0f3a6dd45df3a52f4c Status: Downloaded newer image for auchida/freebsd:latest % docker run -t -i auchida/freebsd /bin/bash Starting the machine I had the same issue. Error response from daemon: json: cannot set embedded pointer to unexported struct: runconfig.hostConfigWrapper Created attachment 194534 [details]
Fix 'docker run' on Go 1.10
I saw the same error when using docker, and this simple patch seems to fix it.
Created attachment 194650 [details]
Fix 'docker run' on Go 1.10 and workaround 'docker info' crash
This updated patch includes a workaround patch to avoid docker daemon panic on 'docker info' command.
Greetings, I faced the same issue on vanilla 12 installation via pkg: docker run hello-world Error response from daemon: json: cannot set embedded pointer to unexported struct: runconfig.hostConfigWrapper As discussed above, on vanilla 12 installation, I applied the patch (194650 referenced above) and now I get either "Repository not found" or "FATAL: kernel too old": docker pull centos latest: Pulling from centos 29466d114cd8: Extracting [========> ] 12.26 MB/74.69 MB b298d692482d: Download complete 88ec626ba223: Download complete Pulling repository centos Repository not found docker pull ubuntu latest: Pulling from ubuntu 893c22467b8c: Pull complete 956e81104ad3: Pull complete fc67a0888591: Pull complete 2181b69ee6eb: Pull complete e05ad70678a5: Pull complete 7feff7652c69: Pull complete Digest: sha256:778d2aed25eb85ec40548addb582cbffd0ca6fe5d2a382cb7f3a8958c1ed50d6 Status: Downloaded newer image for ubuntu:latest docker run -t -i ubuntu /bin/bash FATAL: kernel too old jail: /bin/bash: failed uname -a FreeBSD 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r335760: Thu Jun 28 15:10:28 UTC 2018 root@releng3.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 (In reply to NAMO from comment #7) Some Linux distributions bumped their Linux version requirement to 3.2 in recent years, so you may want to try older releases which still support Linux 2.6.32. Reproducible to not work on FreeBSD 11.2-RELEASE. # uname -a FreeBSD hostname.example.com 11.2-RELEASE FreeBSD 11.2-RELEASE #0 r335510: Fri Jun 22 04:32:14 UTC 2018 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 ``` # docker run hello-world Error response from daemon: json: cannot set embedded pointer to unexported struct: runconfig.hostConfigWrapper ``` ```shell # docker pull centos latest: Pulling from centos 29466d114cd8: Extracting [========> ] 12.26 MB/74.69 MB b298d692482d: Download complete 88ec626ba223: Download complete Pulling repository centos Repository not found ``` Best regards MacLemon rebuild port with patch from comment 6 (by Ting-Wei Lan) and it work perfect. uname -a FreeBSD XXXXX 10.4-RELEASE-p9 FreeBSD 10.4-RELEASE-p9 #0 r336531: Fri Jul 20 04:36:32 EEST 2018 dl@XXXXX:/usr/obj/usr/src/sys/MAINX amd64 docker version Client version: 1.7.0-dev Client API version: 1.19 Go version (client): go1.10.3 Git commit (client): 582db78 OS/Arch (client): freebsd/amd64 Server version: 1.7.0-dev Server API version: 1.19 Go version (server): go1.10.3 Git commit (server): 582db78 OS/Arch (server): freebsd/amd64 I tried patch but it does not really help: docker info Containers: 1 Images: 8 Storage Driver: zfs Zpool: error while getting pool information exit status 1: "/sbin/zpool zpool get all -p zroot" => cannot open '-p': name must begin with a letter Zpool Health: not available Parent Dataset: zroot/docker Space Used By Parent: 114020352 Space Available: 668433186816 Parent Quota: no Compression: off Execution Driver: jail Logging Driver: json-file Kernel Version: <unknown> Operating System: <unknown> (error determining if containerized) CPUs: 2 Total Memory: 0 B Name: server.idefix.lan ID: JK4Y:DDUM:3OKP:JHLD:MFLW:YA5Z:2R43:YC3H:2BHK:35QB:WP4B:CI7J Debug mode (server): true File Descriptors: -1 Goroutines: 18 System Time: 2018-08-15T01:30:40.09099722+02:00 EventsListeners: 0 Init SHA1: Init Path: /usr/local/bin/docker Docker Root Dir: /usr/docker WARNING: No memory limit support WARNING: No swap limit support Try to download centos: docker pull centos latest: Pulling from centos 675ac122cafb: Extracting [========> ] 12.26 MB/74.69 MB a4875ffe6057: Download complete c5507be714a7: Download complete Pulling repository centos Repository not found Try to download ubuntu: docker pull ubuntu latest: Pulling from ubuntu 6361cc537622: Already exists f003bda75e7f: Already exists d08913197ec6: Already exists c0377ee89d00: Already exists cf2766246f1c: Already exists 8a21df6e2aba: Already exists Digest: sha256:8c3cced1211d1a566088c0af049cc8cd6f33f5b275e62e6285ca6a13e66a98f0 Status: Image is up to date for ubuntu:latest docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest 8a21df6e2aba 2 weeks ago 83.48 MB hello-world latest 3535063d9957 4 weeks ago 1.848 kB docker run -t -i ubuntu /bin/bash FATAL: kernel too old jail: /bin/bash: failed I am having FreeBSD11.2 stable. FreeBSD bsd11 11.2-RELEASE FreeBSD 11.2-RELEASE #0 r335510: Fri Jun 22 04:32:14 UTC 2018 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 Getting compilation error post applying path in comment#6 ---> Making bundle: binary (in bundles/1.7.0-dev/binary) Building: /usr/ports/sysutils/docker-freebsd/work/docker-582db78/bundles/1.7.0-dev/binary/docker-1.7.0-dev # github.com/docker/docker/runconfig .gopath/src/github.com/docker/docker/runconfig/config.go:135:2: undefined: HostConfigWrapper *** Error code 2 root@bsd11:/usr/ports/sysutils/docker-freebsd # cat patch-* --- pkg/system/meminfo_unsupported.go.orig 2015-06-08 19:04:30.000000000 +0530 +++ pkg/system/meminfo_unsupported.go 2018-08-13 18:02:43.017348000 +0530 @@ -3,5 +3,5 @@ package system func ReadMemInfo() (*MemInfo, error) { - return nil, ErrNotSupportedPlatform + return &MemInfo{}, ErrNotSupportedPlatform } --- runconfig/config.go.orig 2015-06-08 19:04:30.000000000 +0530 +++ runconfig/config.go 2018-08-17 13:37:07.865535000 +0530 @@ -132,15 +132,15 @@ type Config struct { type ContainerConfigWrapper struct { *Config - *hostConfigWrapper + *HostConfigWrapper } func (c ContainerConfigWrapper) HostConfig() *HostConfig { - if c.hostConfigWrapper == nil { + if c.HostConfigWrapper == nil { return new(HostConfig) } - return c.hostConfigWrapper.GetHostConfig() + return c.HostConfigWrapper.GetHostConfig() } func DecodeContainerConfig(src io.Reader) (*Config, *HostConfig, error) { --- runconfig/hostconfig.go.orig 2018-08-17 14:03:06.712448000 +0530 +++ runconfig/hostconfig.go 2018-08-17 14:05:52.509075000 +0530 @@ -234,7 +234,7 @@ type HostConfig struct { func MergeConfigs(config *Config, hostConfig *HostConfig) *ContainerConfigWrapper { return &ContainerConfigWrapper{ config, - &hostConfigWrapper{InnerHostConfig: hostConfig}, + &HostConfigWrapper{InnerHostConfig: hostConfig}, } } @@ -245,7 +245,7 @@ type hostConfigWrapper struct { *HostConfig // Deprecated. Exported to read attrubutes from json that are not in the inner host config structure. } -func (w hostConfigWrapper) GetHostConfig() *HostConfig { +func (w HostConfigWrapper) GetHostConfig() *HostConfig { hc := w.HostConfig if hc == nil && w.InnerHostConfig != nil { @@ -274,7 +274,7 @@ func (w hostConfigWrapper) GetHostConfig func DecodeHostConfig(src io.Reader) (*HostConfig, error) { decoder := json.NewDecoder(src) - var w hostConfigWrapper + var w HostConfigWrapper if err := decoder.Decode(&w); err != nil { return nil, err } Confirmed working after allying patch from #6 on 12-CURRENT Confirmed working after allying patch from #6 on 11-2-RELEASE. However when I run: docker run hello-world I get: jail: exec /hello: No such file or directory jail: /hello: failed Regards, Daniele. I have this patch QA'd in my local tree, will commit shortly. CC new recent maintainer (joneum), see: ports r489312 A commit references this bug: Author: joneum Date: Mon Jan 14 18:09:21 UTC 2019 New revision: 490308 URL: https://svnweb.freebsd.org/changeset/ports/490308 Log: Add patch to fix an error: docker run hello-world Error response from daemon: json: cannot set embedded pointer to unexported struct: runconfig.hostConfigWrapper PR: 227618 MFH: 2019Q1 Sponsored by: Netzkommune GmbH Changes: head/sysutils/docker-freebsd/Makefile head/sysutils/docker-freebsd/files/patch-pkg_system_meminfo__unsupported.go head/sysutils/docker-freebsd/files/patch-runconfig_config.go head/sysutils/docker-freebsd/files/patch-runconfig_hostconfig.go A commit references this bug: Author: joneum Date: Tue Jan 15 08:18:15 UTC 2019 New revision: 490353 URL: https://svnweb.freebsd.org/changeset/ports/490353 Log: MFH: r490308 Add patch to fix an error: docker run hello-world Error response from daemon: json: cannot set embedded pointer to unexported struct: runconfig.hostConfigWrapper PR: 227618 Sponsored by: Netzkommune GmbH Approved by: ports-secteam (miwi) Changes: _U branches/2019Q1/ branches/2019Q1/sysutils/docker-freebsd/Makefile branches/2019Q1/sysutils/docker-freebsd/files/patch-pkg_system_meminfo__unsupported.go branches/2019Q1/sysutils/docker-freebsd/files/patch-runconfig_config.go branches/2019Q1/sysutils/docker-freebsd/files/patch-runconfig_hostconfig.go |