镜像概述和主要用途
Swift 是一种高性能的系统编程语言,具有简洁现代的语法,可无缝访问现有的 C 和 Objective-C 代码及框架,并且默认是内存安全的。本镜像为 amd64 架构提供官方 Swift 语言环境,适用于 Swift 应用程序的开发、测试和部署。
核心功能和特性
- 提供完整的 Swift 开发环境,包含编译器、标准库和工具链
- 支持多种操作系统基础镜像(Ubuntu、Debian、Amazon Linux、RHEL UBI)
- 提供完整版本和精简版本(slim)两种镜像变体
- 支持 Swift REPL (Read-Eval-Print Loop) 交互式编程
- 支持无缝访问现有 C 和 Objective-C 代码及框架
使用场景和适用范围
- Swift 应用程序的开发和测试环境
- 持续集成和持续部署 (CI/CD) 流程
- Swift 语言学习和实验
- 生产环境中 Swift 应用程序的部署
- 跨平台 Swift 开发
快速参考
维护者
https://github.com/apple/swift-docker
获取帮助
Swift Docker 社区论坛
问题反馈
[***]
支持的架构
https://hub.docker.com/r/amd64/swift/%E3%80%81https://hub.docker.com/r/arm64v8/swift/%E3%80%81https://hub.docker.com/r/winamd64/swift/
支持的标签和对应的 Dockerfile 链接
Swift 6.2.0 版本
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/ubuntu/24.04/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/ubuntu/24.04/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/ubuntu/22.04/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/ubuntu/22.04/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/debian/12/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/debian/12/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/amazonlinux/2/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/amazonlinux/2/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/rhel-ubi/9/Dockerfile
- https://github.com/apple/swift-docker/blob/a2edace54d7f529917ec0c67a226655da7147586/6.2/rhel-ubi/9/slim/Dockerfile
Swift 6.1.3 版本
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/ubuntu/24.04/Dockerfile
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/ubuntu/24.04/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/ubuntu/22.04/Dockerfile
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/ubuntu/22.04/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/debian/12/Dockerfile
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/amazonlinux/2/Dockerfile
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/amazonlinux/2/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/rhel-ubi/9/Dockerfile
- https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/rhel-ubi/9/slim/Dockerfile
Swift 6.0.3 版本
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/24.04/Dockerfile
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/24.04/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/22.04/Dockerfile
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/22.04/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/debian/12/Dockerfile
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/amazonlinux/2/Dockerfile
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/amazonlinux/2/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/rhel-ubi/9/Dockerfile
- https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/rhel-ubi/9/slim/Dockerfile
Swift 5.10.1 版本
- https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/22.04/Dockerfile
- https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/22.04/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/24.04/Dockerfile
- https://github.com/apple/swift-docker/blob/38e4244ebab3d6a4e702fb30449827d6c28ee1fd/5.10/ubuntu/24.04/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/debian/12/Dockerfile
- https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/amazonlinux/2/Dockerfile
- https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/amazonlinux/2/slim/Dockerfile
- https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/rhel-ubi/9/Dockerfile
- https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/rhel-ubi/9/slim/Dockerfile
详细的使用方法和配置说明
从 Docker Hub 拉取镜像
bash
docker pull amd64/swift
启动 Swift REPL
Swift REPL 需要一些额外的安全权限才能运行。以下命令创建一个临时容器,将终端附加到该容器并启动 Swift REPL:
bash
docker run --cap-add sys_ptrace -it --rm amd64/swift swift
创建并附加到容器
bash
docker run -it --name swift_container amd64/swift /bin/bash
稍后启动并附加到现有容器
bash
# 启动容器
docker start swift_container
# 附加到容器
docker attach swift_container
运行 Swift 程序
假设当前目录包含 Swift 源代码文件 main.swift,可以使用以下命令编译并运行:
bash
docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp amd64/swift swiftc main.swift -o main && ./main
Docker Compose 配置示例
创建 docker-compose.yml 文件:
yaml
version: '3'
services:
swift:
image: amd64/swift:latest
volumes:
- ./:/app
working_dir: /app
cap_add:
- SYS_PTRACE
tty