Skip to content

Commit 5d3152f

Browse files
authored
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?
1 parent da9e613 commit 5d3152f

File tree

4 files changed

+77
-63
lines changed

4 files changed

+77
-63
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,7 @@ cargo 1.69.0 (6e9a83356 2023-04-12)
101101

102102
#### Install Docker or Podman
103103

104-
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.
105-
106-
For MacOS users, you can install [OrbStack as a docker alternative](website/src/reference/orbstack.md).
107-
For Podman users, refer to [Using Podman instead of Docker](website/src/reference/podman.md)
104+
Currently, iceberg-rust uses Docker to set up environment for integration tests. See [Container Runtimes](website/src/reference/container-runtimes.md) for setup instructions.
108105

109106
## Build
110107

website/src/SUMMARY.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,5 @@
3232

3333
# Reference
3434

35-
- [Using Podman instead of Docker](./reference/podman.md)
36-
- [OrbStack as a docker alternative](./reference/orbstack.md)
35+
- [Container Runtimes](./reference/container-runtimes.md)
3736
- [Setup GPG key](./reference/setup_gpg.md)

website/src/reference/podman.md renamed to website/src/reference/container-runtimes.md

Lines changed: 75 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,82 @@
1717
~ under the License.
1818
-->
1919

20-
# Using Podman instead of Docker
20+
# Container Runtimes
2121

22-
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.
22+
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.
23+
24+
## Docker Desktop
25+
26+
[Docker Desktop](https://www.docker.com/products/docker-desktop/) is available for macOS, Windows, and Linux.
27+
28+
1. Install Docker Desktop by downloading the [installer](https://www.docker.com/products/docker-desktop/) or using Homebrew on macOS.
29+
```shell
30+
brew install --cask docker
31+
```
32+
33+
2. Launch Docker Desktop and complete the setup.
34+
35+
3. Verify the installation.
36+
```shell
37+
docker --version
38+
docker compose version
39+
```
40+
41+
4. Try some integration tests!
42+
```shell
43+
make test
44+
```
45+
46+
## OrbStack (macOS)
47+
48+
[OrbStack](https://orbstack.dev/) is a lightweight alternative to Docker Desktop on macOS.
49+
50+
1. Install OrbStack by downloading the [installer](https://orbstack.dev/download) or using Homebrew.
51+
```shell
52+
brew install orbstack
53+
```
54+
55+
2. Migrate Docker data (if switching from Docker Desktop).
56+
```shell
57+
orb migrate docker
58+
```
59+
60+
3. (Optional) Add registry mirrors.
61+
62+
You can edit the config directly at `~/.orbstack/config/docker.json` and restart the engine with `orb restart docker`.
63+
64+
```json
65+
{
66+
"registry-mirrors": ["<mirror_addr>"]
67+
}
68+
```
69+
70+
4. Try some integration tests!
71+
```shell
72+
make test
73+
```
74+
75+
## Podman
76+
77+
[Podman](https://podman.io/) is a daemonless container engine. The instructions below set up "rootful podman" with docker's official docker-compose plugin.
2378
2479
1. Have podman v4 or newer.
2580
```shell
2681
$ podman --version
2782
podman version 4.9.4-rhel
2883
```
84+
2985
2. Create a docker wrapper script:
3086
31-
* Create a fresh `/usr/bin/docker` file and add the below contents:
87+
Create a fresh `/usr/bin/docker` file and add the below contents:
3288
```bash
3389
#!/bin/sh
3490
[ -e /etc/containers/nodocker ] || \
3591
echo "Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg." >&2
3692
exec sudo /usr/bin/podman "$@"
3793
```
3894
39-
* Set new `/usr/bin/docker` file to executable.
95+
Set new `/usr/bin/docker` file to executable.
4096
```shell
4197
sudo chmod +x /usr/bin/docker
4298
```
@@ -78,23 +134,24 @@ Iceberg-rust does not require containerization, except for integration tests, wh
78134
cargo test -p iceberg --test file_io_s3_test
79135
```
80136
81-
# References
137+
### Note on rootless containers
82138
83-
* <https://docs.docker.com/compose/install/linux>
84-
* <https://www.redhat.com/sysadmin/podman-docker-compose>
139+
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.
140+
141+
### Podman troubleshooting
142+
143+
**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"`
85144

86-
# Note on rootless containers
145+
**Fix:** Add or modify the `/etc/containers/registries.conf` file:
146+
```toml
147+
[[registry]]
148+
prefix = "docker.io"
149+
location = "docker.io"
150+
```
87151

88-
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 need for "rootful" podman containers can be eliminated.
152+
### Podman references
89153

154+
* <https://docs.docker.com/compose/install/linux>
155+
* <https://www.redhat.com/sysadmin/podman-docker-compose>
90156
* <https://www.redhat.com/sysadmin/container-ip-address-podman>
91157
* <https://github.com/containers/podman/blob/main/docs/tutorials/basic_networking.md>
92-
93-
# Debugging Note:
94-
- 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"`
95-
- Add or modify the `/etc/containers/registries.conf` file:
96-
```toml
97-
[[registry]]
98-
prefix = "docker.io"
99-
location = "docker.io"
100-
```

website/src/reference/orbstack.md

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)