Podman – это инструмент, разработанный для управления контейнерами и подами без необходимости использования демона контейнера, как это часто бывает в мире Docker.
Все контейнеры и поды создаются как дочерние процессы инструмента Podman.
CLI Podman (podman) основан на интерфейсе командной строки Docker.
В этом руководстве мы покажем вам, как создавать и публиковать / отправлять образы Docker в Docker Hub с помощью Podman.
Прежде чем начать, убедитесь, что в вашей системе установлен podman.
Вот руководства, к которым вы можете обратиться:
- 🐳 Как запустить Docker Контейнеры, используя Podman и Libpod
- 🐳 Как установить и использовать Podman на CentOS 8 / RHEL 8
- 🥤 Как установить Podman на Arch Linux / Manjaro
- Как установить Podman на Ubuntu
- ☸️ Как вручную скачать образы контейнеров, используя Kubernetes kubeadm
Создайте свой образ 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
Скачать образ Docker из Docker Hub с помощью podman
Затем вы можете подтянуть образ с других машин, запустив:
--- Используя клиент Docker ---
$ docker pull docker.io/jmutai/nodejs-demo:v1
$ docker pull jmutai/nodejs-demo:v1
--- Используя podman ---
$ podman pull docker.io/jmutai/nodejs-demo:v1
$ podman pull jmutai/nodejs-demo:v1
Запустите тестовый контейнер:
--- С помощью podman ---
$ podman run --name nodejs-demo -p 8080:8080 -d docker.io/jmutai/nodejs-demo:v1
d1a669579a39580fd1dfa19aaeed2c7a29aa28a1324d87c301d20f41e30e014f
--- С помошью Docker ---
$ docker run --name nodejs-demo -p 8080:8080 -d docker.io/jmutai/nodejs-demo:v1
Теперь попробуйте получить доступ к вашему приложению по адресу http://localhost:8080
замените localhost именем хоста или IP-адрес хоста Docker, если необходимо
$ curl localhost:8080
You've hit d1a669579a39
Подтвердите идентификатор контейнера:
$ 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
Наслаждайтесь использованием Podman для запуска образов-контейнеров.