-
-
Save kuanyui/d2294798f4f314f49c4b344c1a4d42c3 to your computer and use it in GitHub Desktop.
| # This is the ~/.bashrc inside the container | |
| PS1='\[\e[1;32m\]\u@\h\[\e[m\]:\[\e[1;34m\]\W\[\e[1;33m\]\$\[\e[m\] ' | |
| alias sz="source ~/.bashrc" | |
| alias ll='ls -al --color=auto ' | |
| alias ls='ls --color=auto ' | |
| alias sc="sudo systemctl" | |
| alias jc="sudo journalctl" | |
| alias jc-clear="sudo journalctl --vacuum-time=5d" # Delete journal logs which are older than 5 days | |
| alias nvv='nvm ls' | |
| alias nv='nvm version' | |
| alias ..='cd ..' | |
| alias ...='cd ../../' | |
| alias ....='cd ../../../' | |
| alias .....='cd ../../../../' | |
| alias ......='cd ../../../../../' | |
| export HISTCONTROL=ignorespace |
| # Zsh eqivalent: | |
| PS1='%B%F{green}%n@%m%f:%F{blue}%~%F{yellow}%#%f%b ' | |
# --compatible means printing results as Docker format, containing more information than podman
podman search --compatible docker.io/library/debianNAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io/library/ubuntu Ubuntu is a Debian-based Linux operating sys... 16875 [OK]
docker.io/library/debian Debian is a Linux distribution that's compos... 4943 [OK]
docker.io/library/neurodebian NeuroDebian provides neuroscience research s... 106 [OK]
docker.io/bitnami/debian-base-buildpack Debian base compilation image 2 [OK]
Now we want to get tags of docker.io/library/debian, but podman search --list-tags cannot get full list, but it's still hard to find out which one is what we want with --limit 99999:
# list
podman search --compatible --list-tags --limit 99999 docker.io/library/debian
Therefore the best way is still searching with their web UI: https://hub.docker.com/_/debian
This step can be skipped because podman run also automatically do this.
podman image pull docker.io/library/debian:bookworm # Initialize an image as a container
podman run --name MY_CONTAINER_BASE --detach --tty -p 58080:8080/tcp docker.io/library/debian:bookworm
# Open the shell of a running container
podman exec --interactive --tty MY_CONTAINER_BASE /bin/bash
# Boot an inactive container
podman start MY_CONTAINER_BASEpodman run [--publish HOST_PORT:CONTAINER_PORT] image --publish, ‐p=[[ip:][hostPort]:]containerPort[/protocol] --volume, ‐v=[[SOURCE‐VOLUME|HOST‐DIR:]CONTAINER‐DIR[:OPTIONS]]
apt update
apt install --no-install-recommends iputils-ping less curl wget make git graphicsmagick
# Install CA otherwise `wget` may returns error like `ERROR: The certificate of 'github.com' is not trusted.`
apt install ca-certificatesDon't install nodejs via apt, because we want to install node of specified version via nvm.
For safety, run this as user instead of root.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashDon't install imagemagick via apt, because Debian 12/Ubuntu 23.10 are still providing imagemagick 6.9 released in 2016, which is lacks of magick commands available since 7.x. We will install official AppImage binary of imagemagick from Github https://github.com/ImageMagick/ImageMagick/releases .
apt install libfontconfig1 libharfbuzz0b libfribidi0
# Example of .bashrc
PATH=/home/user/appimages/imagemagick/usr/bin/:${PATH}# don't use root if possible, so create user and open a shell with user permission.
useradd --create-home --shell /bin/bash user
exit
# open a tty as newly-created `user` permission.
podman exec --interactive --tty --workdir /home/user --user user MY_CONTAINER_BASE /bin/bash
# Create a new folder in ~/ for later use
cd
mkdir MY_PROJECT
cd MY_PROJECTConfirm the uid/gid of newly-created
useruser@4737a93f8989:MY_PROJECT$ id uid=1000(user) gid=1000(user) groups=1000(user)
# podman commit [options] container [image]
podman commit --author [email protected] --format oci --squash NEW_CONTAINER MY_IMAGE_2024_0221
# 亂猜的,亂加 tag ???
podman commit --author [email protected] --format oci NEW_CONTAINER MY_IMAGE:2024_0221Before doing this, you need to
podman commit MY_CONTAINER_BASE MY_IMAGEto create a new image.
| Host | Container | |
|---|---|---|
| Port | 58001 | 8001 |
| UID | $UID | 1000 |
podman run --name MY_CONTAINER --detach --tty --publish 58001:8001/tcp --userns=keep-id:uid=1000,gid=1000 --volume ${HOST_DIR_PATH}:/home/user/MY_PROJECT localhost/MY_CONTAINER_BASE:latest