使用Podman将容器镜像发布到Docker Hub /镜像注册表
时间:2020-02-23 14:31:37 来源:igfitidea点击:
Podman是一种用于管理容器和Pod的工具,不需要像Docker世界中一样常见的容器守护进程。所有容器和Pod均作为Podman工具的子进程创建。 Podmans CLI(podman)基于Docker CLI。在本教程中,很好地展示了如何使用Podman创建和发布Docker镜像并将其发布/推送到Docker Hub。
在开始之前,请确保已在系统中安装了podman。
创建Docker镜像。为此,请创建一个简单的Node.js应用程序。
$mkdir ~/docker-images/demo/ $cd ~/docker-images/demo/
这是我的app.js文件。
$vim app.js const http = require('http'); const os = require('os'); console.log("Node server starting..."); var handler = function(request, response) { console.log("Received request from " + request.connection.remoteAddress); response.writeHead(200); response.end("You've hit " + os.hostname() + "\n"); }; var www = http.createServer(handler); www.listen(8080);
创建Dockerfile。
$vim Dockerfile FROM node ADD app.js /app.js ENTRYPOINT ["node", "app.js"]
用标签构建图像。
$podman build -t docker.io/jmutai/nodejs-demo:v1 . STEP 1: FROM node STEP 2: ADD app.js /app.js afbd0b73b68748a693427c1ed7bf4a40d293632691b385a565a40d0d1092b4de STEP 3: ENTRYPOINT ["node", "app.js"] STEP 4: COMMIT docker.io/jmutai/nodejs-demo:v1 ffe0449e93f36fddecc71e701a6011dbbfa0cfcdf6565209c84b845bfca60bae
将docker.io/jmutai/nodejs-demo:v1替换为应用程序的标记。
登录Docker Hub
$podman login docker.io Username: jmutai Password: Login Succeeded!
由于我已经按照Docker Hub要求的格式在构建时标记了镜像,因此我可以将其推送。
$podman push docker.io/jmutai/nodejs-demo:v1
使用podman从Docker Hub中提取Docker镜像
然后,我们可以通过运行以下命令在其他计算机上提取图像:
--- Using docker client -- $docker pull docker.io/jmutai/nodejs-demo:v1 $docker pull jmutai/nodejs-demo:v1 --- Using podman -- $podman pull docker.io/jmutai/nodejs-demo:v1 $podman pull jmutai/nodejs-demo:v1
运行一个测试容器:
--- With podman -- $podman run --name nodejs-demo -p 8080:8080 -d docker.io/jmutai/nodejs-demo:v1 d1a669579a39580fd1dfa19aaeed2c7a29aa28a1324d87c301d20f41e30e014f --- With Docker -- $docker run --name nodejs-demo -p 8080:8080 -d docker.io/jmutai/nodejs-demo:v1
现在尝试访问位于http://localhost:8080的应用程序(如有必要,将localhost替换为Docker主机的主机名或者IP):
$curl localhost:8080 You've hit d1a669579a39
确认容器ID以验证输出
$podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d1a669579a39 docker.io/jmutai/nodejs-demo:v1 About a minute ago Up About a minute ago 0.0.0.0:8080->8080/tcp nodejs-demo
清理环境:
$podman rm -f d1a669579a39 $docker rm -f d1a669579a39