From 5a43b0abacca296c8128d7f69b01ff2101c19865 Mon Sep 17 00:00:00 2001 From: J Logan Date: Mon, 9 Jun 2025 07:52:52 -0700 Subject: [PATCH] Use python:alpine for tutorial. (#46) --- .../ReservedVmnetNetwork.swift | 4 +- docs/assets/logo.jpg | Bin 12576 -> 0 bytes docs/how-to.md | 4 +- docs/tutorial.md | 39 +++++++----------- 4 files changed, 20 insertions(+), 27 deletions(-) delete mode 100644 docs/assets/logo.jpg diff --git a/Sources/Services/ContainerNetworkService/ReservedVmnetNetwork.swift b/Sources/Services/ContainerNetworkService/ReservedVmnetNetwork.swift index bcce793c..7e283b0f 100644 --- a/Sources/Services/ContainerNetworkService/ReservedVmnetNetwork.swift +++ b/Sources/Services/ContainerNetworkService/ReservedVmnetNetwork.swift @@ -84,7 +84,7 @@ public final class ReservedVmnetNetwork: Network { private func startNetwork(configuration: NetworkConfiguration, log: Logger) throws { log.info( - "starting nmos vmnet network", + "starting vmnet network", metadata: [ "id": "\(configuration.id)", "mode": "\(configuration.mode)", @@ -140,7 +140,7 @@ public final class ReservedVmnetNetwork: Network { let runningGateway = IPv4Address(fromValue: runningSubnet.lower.value + 1) self._state = .running(configuration, NetworkStatus(address: runningSubnet.description, gateway: runningGateway.description)) log.info( - "started (reservation) nmos vmnet network", + "started vmnet network", metadata: [ "id": "\(configuration.id)", "mode": "\(configuration.mode)", diff --git a/docs/assets/logo.jpg b/docs/assets/logo.jpg deleted file mode 100644 index f492482777530c1624f4a1742462434a3f8de2e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12576 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 K{e9@Y{{ICg#kj=) diff --git a/docs/how-to.md b/docs/how-to.md index 5694357c..4b6c3b5b 100644 --- a/docs/how-to.md +++ b/docs/how-to.md @@ -38,7 +38,7 @@ This example mounts a folder named `assets` on your Desktop to the directory `/c % ls -l ~/Desktop/assets total 8 -rw-r--r--@ 1 fido staff 2410 May 13 18:36 link.svg -% container run --volume ${HOME}/Desktop/assets:/content/assets docker.io/python:slim ls -l /content/assets +% container run --volume ${HOME}/Desktop/assets:/content/assets docker.io/python:alpine ls -l /content/assets total 4 -rw-r--r-- 1 root root 2410 May 14 01:36 link.svg % @@ -49,7 +49,7 @@ The argument to `--volume` in the example consists of the full pathname for the The `--mount` option uses a comma-separated `key=value` syntax to achieve the same result:
-% container run --mount source=${HOME}/Desktop/assets,target=/content/assets docker.io/python:slim ls -l /content/assets
+% container run --mount source=${HOME}/Desktop/assets,target=/content/assets docker.io/python:alpine ls -l /content/assets
 total 4
 -rw-r--r-- 1 root root 2410 May 14 01:36 link.svg
 %
diff --git a/docs/tutorial.md b/docs/tutorial.md
index b65b41f7..c336c8a4 100644
--- a/docs/tutorial.md
+++ b/docs/tutorial.md
@@ -118,19 +118,13 @@ mkdir web-test
 cd web-test
 ```
 
-Download an image file for your web server can use:
-
-```bash
-curl -L -o logo.jpg https://github.com/apple/container/tree/main/docs/assets/logo.jpg
-```
-
 In the `web-test` directory, create a file named `Dockerfile` with this content:
 
 ```dockerfile
-FROM docker.io/python:3-bookworm
+FROM docker.io/python:alpine
 WORKDIR /content
-COPY logo.jpg ./
-RUN echo 'Hello

Hello, world!

' > index.html +RUN apk add curl +RUN echo 'Hello

Hello, world!

' > index.html CMD ["python3", "-m", "http.server", "80", "--bind", "0.0.0.0"] ``` @@ -138,9 +132,7 @@ The `FROM` line instructs the `container` builder to start with a base image con The `WORKDIR` line creates a directory `/content` in the image, and makes it the current directory. -The `COPY` command copies the image file `logo.jpg` from your build context to the image. See the following section for a description of the build context. - -The `RUN` line creates a simple HTML landing page named `/content/index.html`. +The first `RUN` line adds the `curl` command to your image, and the second `RUN` line creates a simple HTML landing page named `/content/index.html`. The `CMD` line configures the container to run a simple web server in Python on port 80. Since the working directory is `/content`, the web server runs in that directory and delivers the content of the file `/content/index.html` when a user requests the index page URL. @@ -160,9 +152,9 @@ After the build completes, list the images. You should see both the base image a
 % container images list
-NAME      TAG         DIGEST
-python    3-bookworm  8300f4e04ed367fafc5877b3...
-web-test  latest      464b4a20ac896b8e48e3d248...
+NAME      TAG     DIGEST
+python    alpine  b4d299311845147e7e47c970...
+web-test  latest  25b99501f174803e21c58f9c...
 %
 
@@ -185,8 +177,8 @@ When you list containers now, `my-web-server` is present, along with the contain
 % container ls
 ID             IMAGE                                               OS     ARCH   STATE    ADDR
-my-web-server  web-test:latest                                     linux  arm64  running  192.168.64.3
 buildkit       ghcr.io/apple/container-builder-shim/builder:0.0.3  linux  arm64  running  192.168.64.2
+my-web-server  web-test:latest                                     linux  arm64  running  192.168.64.3
 %
 
@@ -209,19 +201,18 @@ You can run other commands in `my-web-server` by using the `container exec` comm
 % container exec my-web-server ls /content
 index.html
-logo.jpg
 %
 
If you want to poke around in the container, run a shell and issue one or more commands:
-% container exec --tty --interactive my-web-server sh  
-# ls
-index.html  logo.jpg
-# uname -a
-Linux my-web-server 6.12.28 #1 SMP Tue May 20 15:19:05 UTC 2025 aarch64 GNU/Linux
-# exit
+% container exec --tty --interactive my-web-server sh
+/content # ls
+index.html
+/content # uname -a
+Linux my-web-server 6.12.28 #1 SMP Tue May 20 15:19:05 UTC 2025 aarch64 Linux
+/content # exit
 %
 
@@ -237,6 +228,8 @@ Your web server is accessible from other containers as well as from your host. L container run -it --rm web-test curl http://192.168.64.3 ``` +The output should appear as: +
 % container run -it --rm web-test curl http://192.168.64.3
 <!DOCTYPE html><html><head><title>Hello</title></head><body><p><img src="logo.jpg" style="width: 2rem; height: 2rem;">Hello, world!</p></body></html>