Podman biết ra đời sau Docker nên thành trâu chậm uống nước đục. Nhiều người đã quen xài Docker rồi không chắc họ có muốn chuyển sang xài Podman không nữa?
Biết vậy nên Podman có cung cấp lệnh podman với các tham số gần như giống hệt lệnh docker để các DevOps Engineer nhà ta hổng phải nhớ quá nhiều thứ vì thực hiện công việc là như nhau.
Xa hơn nữa, podman còn biến lệnh docker thành lệnh podman luôn. Khi gõ lệnh docker sẽ tự động chuyển sang lệnh podman để chạy y chang vậy.
Hình dưới chạy lệnh docker mô phỏng lệnh podman trên Rocky Linux – 1 biến thể của hệ điều hành Red Hat Enterprise Linux nên hay gọi với cái tên chung là dòng Enterprise Linux.
# cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.3 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.3"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.3 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.3"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.3"
Gõ lịnh docker info nhưng lại thấy buildah là công cụ tạo container image của Podman do thực ra là chạy lịnh podman.
# docker info
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
host:
arch: amd64
buildahVersion: 1.33.8
cgroupControllers:
- cpuset
- cpu
- io
- memory
- hugetlb
- pids
- rdma
- misc
cgroupManager: systemd
cgroupVersion: v2
conmon:
package: conmon-2.1.10-1.el9.x86_64
path: /usr/bin/conmon
version: 'conmon version 2.1.10, commit: 3ea3d7f99779af0fcd69ec16c211a7dc3b4efb60'
cpuUtilization:
idlePercent: 99.96
systemPercent: 0.03
userPercent: 0.01
cpus: 4
databaseBackend: sqlite
distribution:
distribution: rocky
version: "9.3"
eventLogger: journald
freeLocks: 2048
hostname: rocky93
idMappings:
gidmap: null
uidmap: null
kernel: 5.14.0-362.8.1.el9_3.x86_64
linkmode: dynamic
logDriver: journald
memFree: 1613684736
memTotal: 2017656832
networkBackend: netavark
networkBackendInfo:
backend: netavark
dns:
package: aardvark-dns-1.10.0-3.el9_4.x86_64
path: /usr/libexec/podman/aardvark-dns
version: aardvark-dns 1.10.0
package: netavark-1.10.3-1.el9.x86_64
path: /usr/libexec/podman/netavark
version: netavark 1.10.3
ociRuntime:
name: crun
package: crun-1.14.3-1.el9.x86_64
path: /usr/bin/crun
version: |-
crun version 1.14.3
commit: 1961d211ba98f532ea52d2e80f4c20359f241a98
rundir: /run/user/0/crun
spec: 1.0.0
+SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +YAJL
os: linux
pasta:
executable: ""
package: ""
version: ""
remoteSocket:
exists: false
path: /run/podman/podman.sock
security:
apparmorEnabled: false
capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
rootless: false
seccompEnabled: true
seccompProfilePath: /usr/share/containers/seccomp.json
selinuxEnabled: false
serviceIsRemote: false
slirp4netns:
executable: /usr/bin/slirp4netns
package: slirp4netns-1.2.3-1.el9.x86_64
version: |-
slirp4netns version 1.2.3
commit: c22fde291bb35b354e6ca44d13be181c76a0a432
libslirp: 4.4.0
SLIRP_CONFIG_VERSION_MAX: 3
libseccomp: 2.5.2
swapFree: 2147479552
swapTotal: 2147479552
uptime: 0h 36m 27.00s
variant: ""
plugins:
authorization: null
log:
- k8s-file
- none
- passthrough
- journald
network:
- bridge
- macvlan
- ipvlan
volume:
- local
registries:
search:
- registry.access.redhat.com
- registry.redhat.io
- docker.io
store:
configFile: /etc/containers/storage.conf
containerStore:
number: 0
paused: 0
running: 0
stopped: 0
graphDriverName: overlay
graphOptions:
overlay.mountopt: nodev,metacopy=on
graphRoot: /var/lib/containers/storage
graphRootAllocated: 18182307840
graphRootUsed: 5414518784
graphStatus:
Backing Filesystem: xfs
Native Overlay Diff: "false"
Supports d_type: "true"
Supports shifting: "false"
Supports volatile: "true"
Using metacopy: "true"
imageCopyTmpDir: /var/tmp
imageStore:
number: 0
runRoot: /run/containers/storage
transientStore: false
volumePath: /var/lib/containers/storage/volumes
version:
APIVersion: 4.9.4-rhel
Built: 1725442483
BuiltTime: Wed Sep 4 16:34:43 2024
GitCommit: ""
GoVersion: go1.21.11 (Red Hat 1.21.11-1.el9_4)
Os: linux
OsArch: linux/amd64
Version: 4.9.4-rhel
Gói podman-docker có lệnh docker mô phỏng lệnh podman.
# yum info podman-docker
Installed Packages
Name : podman-docker
Epoch : 4
Version : 4.9.4
Release : 10.el9_4
Architecture : noarch
Size : 10 k
Source : podman-4.9.4-10.el9_4.src.rpm
Repository : @System
From repo : appstream
Summary : Emulate Docker CLI using podman
URL : https://podman.io/
License : Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0
Description : This package installs a script named docker that emulates the Docker CLI by
: executes podman commands, it also creates links between all Docker CLI man
: pages and podman.
Khóa học Công nghệ lõi Linux thực chiến sẽ giúp bạn hiểu rõ hơn về mặt kĩ thuật của bài viết này, các bạn trẻ hãy mua học ngay và luôn nha, ngành công nghệ thông tin không có chờ đợi các bạn đâu, hãy học nó sớm để thành công sớm.