Windows 上是否有任何工具支持从 Dockerfile(Windows 映像)构建映像,不需要在 VM 上运行守护程序?
见过 Buildah 和 Podman,但从文档看来它们仅限于 Linux 平台。
Windows 上是否有任何工具支持从 Dockerfile(Windows 映像)构建映像,不需要在 VM 上运行守护程序?
见过 Buildah 和 Podman,但从文档看来它们仅限于 Linux 平台。
如果您担心在根上下文中工作的恶魔的安全问题,Podman 现在应该是您的朋友。您需要安装带有 Linux 映像的 WSL2(如 Ubuntu)bwt。
请查找博客文章:Replace Docker for Windows with Podman,其中详细描述了 Podman/WSL2 集成。
我让自己将案例编译到单个 bash podman-quick.sh脚本中。免费获取它并在您的新 WSL2 实例上执行它以感受本质。
#!/bin/bash
export NAME=xUbuntu
export VERSION_ID=20.04
export BASEPATH=/run/user/podman
export PID_FILE=$BASEPATH/podman.pid
export SOCK_FILE=$BASEPATH/podman.sock
#--- Load dependencies
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/${NAME}_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/${NAME}_${VERSION_ID}/Release.key" | sudo apt-key add -
sudo apt-get update -qq
sudo apt-get -qq -y install podman docker-compose
sudo mkdir -p /etc/containers
sudo mkdir -p $BASEPATH
echo -e "[registries.search]\nregistries = ['docker.io', 'quay.io']" | sudo tee /etc/containers/registries.conf
alias docker=podman
podman system service --time=0 unix://$SOCK_FILE & echo "$!" > $PID_FILE
until [[ -S "$SOCK_FILE" && $COUNTER -lt 0 ]]; do echo Wating $COUNTER && sleep 1 && COUNTER=$((COUNTER-1)); done
if [ -S $SOCK_FILE ]; then sudo ln -sf $SOCK_FILE /var/run/docker.sock; fi
echo "podman service started, pid is $(cat $PID_FILE)"
# Validate Podman
docker run -dt -p 8080:80/tcp docker.io/library/httpd
curl http://localhost:8080 #... expected: <html><body><h1>It works!</h1></body></html>
# Validate Docker-compose
echo -e "version: '3' \nservices:\n myalpine:\n image: python:3.7-alpine" > docker-compose.yml
sudo docker-compose up
sudo docker-compose images #... expected: Image to be resent 'docker.io/library/python'
如果你想构建 linux 容器,你需要一个 linux 内核。所以这需要一个 VM 或 wsl2。
Buildah 和 Podman 在任何一种情况下都应该可以正常工作。