Skip to content

Docker run fails on ubuntu #20889

@gvidaver

Description

@gvidaver

Bug report criteria

What happened?

I'm running Ubuntu 22.04.5. If I follow the instructions on https://etcd.io/docs/v3.6/op-guide/container/ (I had to modify it slightly to add a sudo):

ETCD_VERSION=v3.6.0
REGISTRY=quay.io/coreos/etcd
# available from v3.2.5
REGISTRY=gcr.io/etcd-development/etcd

sudo docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --volume=${DATA_DIR}:/etcd-data \
  --name etcd ${REGISTRY}:${ETCD_VERSION} \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name node1 \
  --initial-advertise-peer-urls http://${NODE1}:2380 --listen-peer-urls http://0.0.0.0:2380 \
  --advertise-client-urls http://${NODE1}:2379 --listen-client-urls http://0.0.0.0:2379 \
  --initial-cluster node1=http://${NODE1}:2380

It fails with:

2025/11/05 15:40:36 WARNING: [core] [Channel #1 SubChannel #4]grpc: addrConn.createTransport failed to connect to {Addr: "155.34.234.20:8080", ServerName: "0.0.0.0:2379", Attributes: {"<%!p(proxyattributes.keyType=grpc.resolver.delegatingresolver.proxyOptions)>": "<%!p(proxyattributes.Options={<nil> 0.0.0.0:2379})>" }, }. Err: connection error: desc = "error reading server preface: http2: frame too large"

Here is the log:

{"level":"warn","ts":"2025-11-05T15:49:35.747699Z","caller":"embed/config.go:1209","msg":"Running http and grpc server on single port. This is not recommended for production."}
{"level":"info","ts":"2025-11-05T15:49:35.747870Z","caller":"etcdmain/etcd.go:64","msg":"Running: ","args":["/usr/local/bin/etcd","--data-dir=/etcd-data","--name","node1","--initial-advertise-peer-urls","http://192.168.1.21:2380","--listen-peer-urls","http://0.0.0.0:2380","--advertise-client-urls","http://192.168.1.21:2379","--listen-client-urls","http://0.0.0.0:2379","--initial-cluster","node1=http://192.168.1.21:2380"]}
{"level":"info","ts":"2025-11-05T15:49:35.747984Z","caller":"etcdmain/etcd.go:107","msg":"server has already been initialized","data-dir":"/etcd-data","dir-type":"member"}
{"level":"warn","ts":"2025-11-05T15:49:35.748010Z","caller":"embed/config.go:1209","msg":"Running http and grpc server on single port. This is not recommended for production."}
{"level":"info","ts":"2025-11-05T15:49:35.748020Z","caller":"embed/etcd.go:138","msg":"configuring peer listeners","listen-peer-urls":["http://0.0.0.0:2380"]}
{"level":"info","ts":"2025-11-05T15:49:35.748799Z","caller":"embed/etcd.go:146","msg":"configuring client listeners","listen-client-urls":["http://0.0.0.0:2379"]}
{"level":"info","ts":"2025-11-05T15:49:35.749347Z","caller":"embed/etcd.go:323","msg":"starting an etcd server","etcd-version":"3.6.0","git-sha":"f5d605a","go-version":"go1.23.9","go-os":"linux","go-arch":"amd64","max-cpu-set":128,"max-cpu-available":128,"member-initialized":true,"name":"node1","data-dir":"/etcd-data","wal-dir":"","wal-dir-dedicated":"","member-dir":"/etcd-data/member","force-new-cluster":false,"heartbeat-interval":"100ms","election-timeout":"1s","initial-election-tick-advance":true,"snapshot-count":10000,"max-wals":5,"max-snapshots":5,"snapshot-catchup-entries":5000,"initial-advertise-peer-urls":["http://192.168.1.21:2380"],"listen-peer-urls":["http://0.0.0.0:2380"],"advertise-client-urls":["http://192.168.1.21:2379"],"listen-client-urls":["http://0.0.0.0:2379"],"listen-metrics-urls":[],"experimental-local-address":"","cors":["*"],"host-whitelist":["*"],"initial-cluster":"","initial-cluster-state":"new","initial-cluster-token":"","quota-backend-bytes":2147483648,"max-request-bytes":1572864,"max-concurrent-streams":4294967295,"pre-vote":true,"feature-gates":"","initial-corrupt-check":false,"corrupt-check-time-interval":"0s","compact-check-time-interval":"1m0s","auto-compaction-mode":"periodic","auto-compaction-retention":"0s","auto-compaction-interval":"0s","discovery-url":"","discovery-proxy":"","discovery-token":"","discovery-endpoints":"","discovery-dial-timeout":"2s","discovery-request-timeout":"5s","discovery-keepalive-time":"2s","discovery-keepalive-timeout":"6s","discovery-insecure-transport":true,"discovery-insecure-skip-tls-verify":false,"discovery-cert":"","discovery-key":"","discovery-cacert":"","discovery-user":"","downgrade-check-interval":"5s","max-learners":1,"v2-deprecation":"write-only"}
{"level":"warn","ts":"2025-11-05T15:49:35.749448Z","caller":"fileutil/fileutil.go:56","msg":"check file permission","error":"directory \"/etcd-data\" exist, but the permission is \"drwxr-xr-x\". The recommended permission is \"-rwx------\" to prevent possible unprivileged access to the data"}
{"level":"info","ts":"2025-11-05T15:49:35.750131Z","logger":"bbolt","caller":"backend/backend.go:203","msg":"Opening db file (/etcd-data/member/snap/db) with mode -rw------- and with options: {Timeout: 0s, NoGrowSync: false, NoFreelistSync: true, PreLoadFreelist: false, FreelistType: hashmap, ReadOnly: false, MmapFlags: 8000, InitialMmapSize: 10737418240, PageSize: 0, NoSync: false, OpenFile: 0x0, Mlock: false, Logger: 0xc000236b00}"}
{"level":"info","ts":"2025-11-05T15:49:35.756812Z","logger":"bbolt","caller":"[email protected]/db.go:321","msg":"Opening bbolt db (/etcd-data/member/snap/db) successfully"}
{"level":"info","ts":"2025-11-05T15:49:35.756871Z","caller":"storage/backend.go:80","msg":"opened backend db","path":"/etcd-data/member/snap/db","took":"6.872407ms"}
{"level":"info","ts":"2025-11-05T15:49:35.756911Z","caller":"etcdserver/bootstrap.go:219","msg":"restore consistentIndex","index":4}
{"level":"info","ts":"2025-11-05T15:49:35.757217Z","caller":"etcdserver/bootstrap.go:440","msg":"No snapshot found. Recovering WAL from scratch!"}
{"level":"info","ts":"2025-11-05T15:49:35.757243Z","caller":"etcdserver/bootstrap.go:231","msg":"recovered v3 backend","backend-size-bytes":20480,"backend-size":"20 kB","backend-size-in-use-bytes":12288,"backend-size-in-use":"12 kB"}
{"level":"info","ts":"2025-11-05T15:49:35.757699Z","caller":"etcdserver/bootstrap.go:584","msg":"restarting local member","cluster-id":"b0d8c8fa91c8145f","local-member-id":"e57df09545f0deb9","commit-index":4}
{"level":"info","ts":"2025-11-05T15:49:35.757735Z","caller":"etcdserver/bootstrap.go:93","msg":"bootstrapping cluster"}
{"level":"info","ts":"2025-11-05T15:49:35.757844Z","caller":"etcdserver/bootstrap.go:100","msg":"bootstrapping storage"}
{"level":"info","ts":"2025-11-05T15:49:35.757951Z","caller":"membership/cluster.go:587","msg":"Detected member only in v3store but missing in v2store","member":"{ID:e57df09545f0deb9 RaftAttributes:{PeerURLs:[http://192.168.1.21:2380] IsLearner:false} Attributes:{Name:node1 ClientURLs:[http://192.168.1.21:2379]}}"}
{"level":"info","ts":"2025-11-05T15:49:35.757991Z","caller":"api/capability.go:76","msg":"enabled capabilities for version","cluster-version":"3.6"}
{"level":"info","ts":"2025-11-05T15:49:35.758011Z","caller":"membership/cluster.go:297","msg":"recovered/added member from store","cluster-id":"b0d8c8fa91c8145f","local-member-id":"e57df09545f0deb9","recovered-remote-peer-id":"e57df09545f0deb9","recovered-remote-peer-urls":["http://192.168.1.21:2380"],"recovered-remote-peer-is-learner":false}
{"level":"info","ts":"2025-11-05T15:49:35.758033Z","caller":"membership/cluster.go:307","msg":"set cluster version from store","cluster-version":"3.6"}
{"level":"info","ts":"2025-11-05T15:49:35.758043Z","caller":"etcdserver/bootstrap.go:108","msg":"bootstrapping raft"}
{"level":"info","ts":"2025-11-05T15:49:35.758055Z","caller":"etcdserver/server.go:312","msg":"bootstrap successfully"}
{"level":"info","ts":"2025-11-05T15:49:35.758115Z","logger":"raft","caller":"[email protected]/raft.go:1981","msg":"e57df09545f0deb9 switched to configuration voters=()"}
{"level":"info","ts":"2025-11-05T15:49:35.758159Z","logger":"raft","caller":"[email protected]/raft.go:897","msg":"e57df09545f0deb9 became follower at term 2"}
{"level":"info","ts":"2025-11-05T15:49:35.758179Z","logger":"raft","caller":"[email protected]/raft.go:493","msg":"newRaft e57df09545f0deb9 [peers: [], term: 2, commit: 4, applied: 0, lastindex: 4, lastterm: 2]"}
{"level":"warn","ts":"2025-11-05T15:49:35.760340Z","caller":"auth/store.go:1135","msg":"simple token is not cryptographically signed"}
{"level":"info","ts":"2025-11-05T15:49:35.762716Z","caller":"mvcc/kvstore.go:408","msg":"kvstore restored","current-rev":1}
{"level":"info","ts":"2025-11-05T15:49:35.767867Z","caller":"storage/quota.go:93","msg":"enabled backend quota with default value","quota-name":"v3-applier","quota-size-bytes":2147483648,"quota-size":"2.1 GB"}
{"level":"info","ts":"2025-11-05T15:49:35.767938Z","caller":"etcdserver/server.go:589","msg":"starting etcd server","local-member-id":"e57df09545f0deb9","local-server-version":"3.6.0","cluster-id":"b0d8c8fa91c8145f","cluster-version":"3.6"}
{"level":"info","ts":"2025-11-05T15:49:35.768102Z","caller":"etcdserver/server.go:483","msg":"started as single-node; fast-forwarding election ticks","local-member-id":"e57df09545f0deb9","forward-ticks":9,"forward-duration":"900ms","election-ticks":10,"election-timeout":"1s"}
{"level":"info","ts":"2025-11-05T15:49:35.768203Z","caller":"embed/etcd.go:640","msg":"serving peer traffic","address":"[::]:2380"}
{"level":"info","ts":"2025-11-05T15:49:35.768255Z","caller":"embed/etcd.go:611","msg":"cmux::serve","address":"[::]:2380"}
{"level":"info","ts":"2025-11-05T15:49:35.768262Z","caller":"embed/etcd.go:292","msg":"now serving peer/client/metrics","local-member-id":"e57df09545f0deb9","initial-advertise-peer-urls":["http://192.168.1.21:2380"],"listen-peer-urls":["http://0.0.0.0:2380"],"advertise-client-urls":["http://192.168.1.21:2379"],"listen-client-urls":["http://0.0.0.0:2379"],"listen-metrics-urls":[]}
{"level":"info","ts":"2025-11-05T15:49:35.768181Z","caller":"fileutil/purge.go:49","msg":"started to purge file","dir":"/etcd-data/member/snap","suffix":"snap.db","max":5,"interval":"30s"}
{"level":"info","ts":"2025-11-05T15:49:35.768380Z","caller":"fileutil/purge.go:49","msg":"started to purge file","dir":"/etcd-data/member/snap","suffix":"snap","max":5,"interval":"30s"}
{"level":"info","ts":"2025-11-05T15:49:35.768401Z","caller":"fileutil/purge.go:49","msg":"started to purge file","dir":"/etcd-data/member/wal","suffix":"wal","max":5,"interval":"30s"}
{"level":"info","ts":"2025-11-05T15:49:35.768616Z","logger":"raft","caller":"[email protected]/raft.go:1981","msg":"e57df09545f0deb9 switched to configuration voters=(16536637930688536249)"}
{"level":"info","ts":"2025-11-05T15:49:35.768830Z","caller":"membership/cluster.go:433","msg":"ignore already added member","cluster-id":"b0d8c8fa91c8145f","local-member-id":"e57df09545f0deb9","added-peer-id":"e57df09545f0deb9","added-peer-peer-urls":["http://192.168.1.21:2380"],"added-peer-is-learner":false}
{"level":"info","ts":"2025-11-05T15:49:35.769011Z","caller":"membership/cluster.go:646","msg":"updated cluster version","cluster-id":"b0d8c8fa91c8145f","local-member-id":"e57df09545f0deb9","from":"3.6","to":"3.6"}
{"level":"info","ts":"2025-11-05T15:49:35.858325Z","logger":"raft","caller":"[email protected]/raft.go:988","msg":"e57df09545f0deb9 is starting a new election at term 2"}
{"level":"info","ts":"2025-11-05T15:49:35.858365Z","logger":"raft","caller":"[email protected]/raft.go:930","msg":"e57df09545f0deb9 became pre-candidate at term 2"}
{"level":"info","ts":"2025-11-05T15:49:35.858434Z","logger":"raft","caller":"[email protected]/raft.go:1077","msg":"e57df09545f0deb9 received MsgPreVoteResp from e57df09545f0deb9 at term 2"}
{"level":"info","ts":"2025-11-05T15:49:35.858453Z","logger":"raft","caller":"[email protected]/raft.go:1693","msg":"e57df09545f0deb9 has received 1 MsgPreVoteResp votes and 0 vote rejections"}
{"level":"info","ts":"2025-11-05T15:49:35.858475Z","logger":"raft","caller":"[email protected]/raft.go:912","msg":"e57df09545f0deb9 became candidate at term 3"}
{"level":"info","ts":"2025-11-05T15:49:35.859675Z","logger":"raft","caller":"[email protected]/raft.go:1077","msg":"e57df09545f0deb9 received MsgVoteResp from e57df09545f0deb9 at term 3"}
{"level":"info","ts":"2025-11-05T15:49:35.859696Z","logger":"raft","caller":"[email protected]/raft.go:1693","msg":"e57df09545f0deb9 has received 1 MsgVoteResp votes and 0 vote rejections"}
{"level":"info","ts":"2025-11-05T15:49:35.859710Z","logger":"raft","caller":"[email protected]/raft.go:970","msg":"e57df09545f0deb9 became leader at term 3"}
{"level":"info","ts":"2025-11-05T15:49:35.859730Z","logger":"raft","caller":"[email protected]/node.go:370","msg":"raft.node: e57df09545f0deb9 elected leader e57df09545f0deb9 at term 3"}
{"level":"info","ts":"2025-11-05T15:49:35.861743Z","caller":"etcdserver/server.go:1804","msg":"published local member to cluster through raft","local-member-id":"e57df09545f0deb9","local-member-attributes":"{Name:node1 ClientURLs:[http://192.168.1.21:2379]}","cluster-id":"b0d8c8fa91c8145f","publish-timeout":"7s"}
{"level":"info","ts":"2025-11-05T15:49:35.861760Z","caller":"embed/serve.go:138","msg":"ready to serve client requests"}
{"level":"info","ts":"2025-11-05T15:49:35.861984Z","caller":"etcdmain/main.go:44","msg":"notifying init daemon"}
{"level":"info","ts":"2025-11-05T15:49:35.862028Z","caller":"etcdmain/main.go:50","msg":"successfully notified init daemon"}
{"level":"info","ts":"2025-11-05T15:49:35.862406Z","caller":"v3rpc/health.go:63","msg":"grpc service status changed","service":"","status":"SERVING"}
{"level":"info","ts":"2025-11-05T15:49:35.863861Z","caller":"embed/serve.go:220","msg":"serving client traffic insecurely; this is strongly discouraged!","traffic":"grpc+http","address":"[::]:2379"}
2025/11/05 15:49:35 WARNING: [core] [Channel #1 SubChannel #4]grpc: addrConn.createTransport failed to connect to {Addr: "155.34.234.20:8080", ServerName: "0.0.0.0:2379", Attributes: {"<%!p(proxyattributes.keyType=grpc.resolver.delegatingresolver.proxyOptions)>": "<%!p(proxyattributes.Options={<nil> 0.0.0.0:2379})>" }, }. Err: connection error: desc = "error reading server preface: http2: frame too large"
2025/11/05 15:49:36 WARNING: [core] [Channel #1 SubChannel #4]grpc: addrConn.createTransport failed to connect to {Addr: "155.34.234.20:8080", ServerName: "0.0.0.0:2379", Attributes: {"<%!p(proxyattributes.keyType=grpc.resolver.delegatingresolver.proxyOptions)>": "<%!p(proxyattributes.Options={<nil> 0.0.0.0:2379})>" }, }. Err: connection error: desc = "error reading server preface: http2: frame too large"
2025/11/05 15:49:38 WARNING: [core] [Channel #1 SubChannel #4]grpc: addrConn.createTransport failed to connect to {Addr: "155.34.234.20:8080", ServerName: "0.0.0.0:2379", Attributes: {"<%!p(proxyattributes.keyType=grpc.resolver.delegatingresolver.proxyOptions)>": "<%!p(proxyattributes.Options={<nil> 0.0.0.0:2379})>" }, }. Err: connection error: desc = "error reading server preface: http2: frame too large"
2025/11/05 15:49:40 WARNING: [core] [Channel #1 SubChannel #4]grpc: addrConn.createTransport failed to connect to {Addr: "155.34.234.20:8080", ServerName: "0.0.0.0:2379", Attributes: {"<%!p(proxyattributes.keyType=grpc.resolver.delegatingresolver.proxyOptions)>": "<%!p(proxyattributes.Options={<nil> 0.0.0.0:2379})>" }, }. Err: connection error: desc = "error reading server preface: http2: frame too large"
2025/11/05 15:49:44 WARNING: [core] [Channel #1 SubChannel #4]grpc: addrConn.createTransport failed to connect to {Addr: "155.34.234.20:8080", ServerName: "0.0.0.0:2379", Attributes: {"<%!p(proxyattributes.keyType=grpc.resolver.delegatingresolver.proxyOptions)>": "<%!p(proxyattributes.Options={<nil> 0.0.0.0:2379})>" }, }. Err: connection error: desc = "error reading server preface: http2: frame too large"
2025/11/05 15:49:50 WARNING: [core] [Channel #1 SubChannel #4]grpc: addrConn.createTransport failed to connect to {Addr: "155.34.234.20:8080", ServerName: "0.0.0.0:2379", Attributes: {"<%!p(proxyattributes.keyType=grpc.resolver.delegatingresolver.proxyOptions)>": "<%!p(proxyattributes.Options={<nil> 0.0.0.0:2379})>" }, }. Err: connection error: desc = "error reading server preface: http2: frame too large"
2025/11/05 15:50:02 WARNING: [core] [Channel #1 SubChannel #4]grpc: addrConn.createTransport failed to connect to {Addr: "155.34.234.20:8080", ServerName: "0.0.0.0:2379", Attributes: {"<%!p(proxyattributes.keyType=grpc.resolver.delegatingresolver.proxyOptions)>": "<%!p(proxyattributes.Options={<nil> 0.0.0.0:2379})>" }, }. Err: connection error: desc = "error reading server preface: http2: frame too large"

What did you expect to happen?

The service to come up cleanly.

How can we reproduce it (as minimally and precisely as possible)?

Follow the docker instructions from https://etcd.io/docs/v3.6/op-guide/container/ on an ubuntu machine.

Anything else we need to know?

The docker file works fine on my mac.

Etcd version (please run commands below)

$ etcd --version
# paste output here

$ etcdctl version
# paste output here

Etcd configuration (command line flags or environment variables)

paste your configuration here

Etcd debug information (please run commands below, feel free to obfuscate the IP address or FQDN in the output)

$ etcdctl member list -w table
# paste output here

$ etcdctl --endpoints=<member list> endpoint status -w table
# paste output here

Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions