This is an automated email from the ASF dual-hosted git repository.
liurenjie1024 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-rust.git
The following commit(s) were added to refs/heads/main by this push:
new 5d3152f11 site: merge container docs and add a section about docker
desktop (#2091)
5d3152f11 is described below
commit 5d3152f11ec8fbb210a48d1ce490bc1ea73b6ca0
Author: Kevin Liu <[email protected]>
AuthorDate: Thu Jan 29 19:06:12 2026 -0500
site: merge container docs and add a section about docker desktop (#2091)
## Which issue does this PR close?
- Closes #719
## What changes are included in this PR?
With all the recent changes to our test setup and containers (#2071,
#2074, #2078), `make test` now works with Docker Desktop. I tested this
locally! (requires #2090)
This PR updates our documentation to reflect that docker desktop works.
We used to have 2 pages for containers, 1 for orbstack another for
podman. I merged them together and also added a section for Docker
Desktop
Preview:
<img width="1522" height="1010" alt="Screenshot 2026-01-29 at 11 35
55 AM"
src="https://github.com/user-attachments/assets/567df138-a15b-4e2e-a91e-2166b4f93f5a"
/>
## Are these changes tested?
---
CONTRIBUTING.md | 5 +-
website/src/SUMMARY.md | 3 +-
.../reference/{podman.md => container-runtimes.md} | 93 +++++++++++++++++-----
website/src/reference/orbstack.md | 39 ---------
4 files changed, 77 insertions(+), 63 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0d05c3dda..d1a736ed1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -101,10 +101,7 @@ cargo 1.69.0 (6e9a83356 2023-04-12)
#### Install Docker or Podman
-Currently, iceberg-rust uses Docker to set up environment for integration
tests. Native Docker has some limitations, please check
(https://github.com/apache/iceberg-rust/pull/748). Please use Orbstack or
Podman.
-
-For MacOS users, you can install [OrbStack as a docker
alternative](website/src/reference/orbstack.md).
-For Podman users, refer to [Using Podman instead of
Docker](website/src/reference/podman.md)
+Currently, iceberg-rust uses Docker to set up environment for integration
tests. See [Container Runtimes](website/src/reference/container-runtimes.md)
for setup instructions.
## Build
diff --git a/website/src/SUMMARY.md b/website/src/SUMMARY.md
index da82364f5..dfe0043ff 100644
--- a/website/src/SUMMARY.md
+++ b/website/src/SUMMARY.md
@@ -32,6 +32,5 @@
# Reference
-- [Using Podman instead of Docker](./reference/podman.md)
-- [OrbStack as a docker alternative](./reference/orbstack.md)
+- [Container Runtimes](./reference/container-runtimes.md)
- [Setup GPG key](./reference/setup_gpg.md)
diff --git a/website/src/reference/podman.md
b/website/src/reference/container-runtimes.md
similarity index 53%
rename from website/src/reference/podman.md
rename to website/src/reference/container-runtimes.md
index eee93a0b3..7b4ac3851 100644
--- a/website/src/reference/podman.md
+++ b/website/src/reference/container-runtimes.md
@@ -17,18 +17,74 @@
~ under the License.
-->
-# Using Podman instead of Docker
+# Container Runtimes
-Iceberg-rust does not require containerization, except for integration tests,
where "docker" and "docker-compose" are used to start containers for minio and
various catalogs. Below instructions setup "rootful podman" and docker's
official docker-compose plugin to run integration tests as an alternative to
docker or Orbstack.
+Iceberg-rust uses containers for integration tests, where `docker` and `docker
compose` start containers for MinIO and various catalogs. You can use any of
the following container runtimes.
+
+## Docker Desktop
+
+[Docker Desktop](https://www.docker.com/products/docker-desktop/) is available
for macOS, Windows, and Linux.
+
+1. Install Docker Desktop by downloading the
[installer](https://www.docker.com/products/docker-desktop/) or using Homebrew
on macOS.
+ ```shell
+ brew install --cask docker
+ ```
+
+2. Launch Docker Desktop and complete the setup.
+
+3. Verify the installation.
+ ```shell
+ docker --version
+ docker compose version
+ ```
+
+4. Try some integration tests!
+ ```shell
+ make test
+ ```
+
+## OrbStack (macOS)
+
+[OrbStack](https://orbstack.dev/) is a lightweight alternative to Docker
Desktop on macOS.
+
+1. Install OrbStack by downloading the
[installer](https://orbstack.dev/download) or using Homebrew.
+ ```shell
+ brew install orbstack
+ ```
+
+2. Migrate Docker data (if switching from Docker Desktop).
+ ```shell
+ orb migrate docker
+ ```
+
+3. (Optional) Add registry mirrors.
+
+ You can edit the config directly at `~/.orbstack/config/docker.json` and
restart the engine with `orb restart docker`.
+
+ ```json
+ {
+ "registry-mirrors": ["<mirror_addr>"]
+ }
+ ```
+
+4. Try some integration tests!
+ ```shell
+ make test
+ ```
+
+## Podman
+
+[Podman](https://podman.io/) is a daemonless container engine. The
instructions below set up "rootful podman" with docker's official
docker-compose plugin.
1. Have podman v4 or newer.
```shell
$ podman --version
podman version 4.9.4-rhel
```
+
2. Create a docker wrapper script:
- * Create a fresh `/usr/bin/docker` file and add the below contents:
+ Create a fresh `/usr/bin/docker` file and add the below contents:
```bash
#!/bin/sh
[ -e /etc/containers/nodocker ] || \
@@ -36,7 +92,7 @@ Iceberg-rust does not require containerization, except for
integration tests, wh
exec sudo /usr/bin/podman "$@"
```
- * Set new `/usr/bin/docker` file to executable.
+ Set new `/usr/bin/docker` file to executable.
```shell
sudo chmod +x /usr/bin/docker
```
@@ -78,23 +134,24 @@ Iceberg-rust does not require containerization, except for
integration tests, wh
cargo test -p iceberg --test file_io_s3_test
```
-# References
+### Note on rootless containers
-* <https://docs.docker.com/compose/install/linux>
-* <https://www.redhat.com/sysadmin/podman-docker-compose>
+As of podman v4, ["To be succinct and simple, when running rootless
containers, the container itself does not have an IP
address"](https://www.redhat.com/sysadmin/container-ip-address-podman). This
causes issues with iceberg-rust's integration tests, which rely upon
IP-addressable containers via docker-compose. As a result, podman "rootful"
containers are required to ensure containers have IP addresses.
+
+### Podman troubleshooting
+
+**Error:** `short-name "apache/iceberg-rest-fixture" did not resolve to an
alias and no unqualified-search registries are defined in
"/etc/containers/registries.conf"`
-# Note on rootless containers
+**Fix:** Add or modify the `/etc/containers/registries.conf` file:
+```toml
+[[registry]]
+prefix = "docker.io"
+location = "docker.io"
+```
-As of podman v4, ["To be succinct and simple, when running rootless
containers, the container itself does not have an IP
address"](https://www.redhat.com/sysadmin/container-ip-address-podman) This
causes issues with iceberg-rust's integration tests, which rely upon
ip-addressable containers via docker-compose. As a result, podman "rootful"
containers are required throughout to ensure containers have IP addresses.
Perhaps as a future work or with updates to default podman networking, the
[...]
+### Podman references
+* <https://docs.docker.com/compose/install/linux>
+* <https://www.redhat.com/sysadmin/podman-docker-compose>
* <https://www.redhat.com/sysadmin/container-ip-address-podman>
*
<https://github.com/containers/podman/blob/main/docs/tutorials/basic_networking.md>
-
-# Debugging Note:
- - Fix for error: `Error: short-name "apache/iceberg-rest-fixture" did not
resolve to an alias and no unqualified-search registries are defined in
"/etc/containers/registries.conf"`
- - Add or modify the `/etc/containers/registries.conf` file:
- ```toml
- [[registry]]
- prefix = "docker.io"
- location = "docker.io"
- ```
diff --git a/website/src/reference/orbstack.md
b/website/src/reference/orbstack.md
deleted file mode 100644
index cbd656635..000000000
--- a/website/src/reference/orbstack.md
+++ /dev/null
@@ -1,39 +0,0 @@
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
--->
-
-# OrbStack as a docker alternative on macOS
-1. Install OrbStack by downloading [installer](https://orbstack.dev/download)
or using Homebrew.
- ```shell
- brew install orbstack
- ```
-
-2. Migrate Docker data
- ```shell
- orb migrate docker
- ```
-
-3. (Optional) Add registry mirrors
-
- You can edit the config directly at `~/.orbstack/config/docker.json` and
restart the engine with `orb restart docker`.
-
- ```
- {
- "registry-mirrors": ["<mirror_addr>"]
- }
- ```