Docker Cheat Sheet

دانلود و اجرای ایمیج

sudo docker run یا pull نام ایمیج
docker run -d nginx

مدیریت ایمیج‌ها و کانتینرها

لیست ایمیج‌ها

sudo docker images

لیست کانتینرهای در حال اجرا

sudo docker ps

لیست تمام کانتینرها (حتی استاپ شده)

sudo docker ps -a

پاک کردن کانتینرها

sudo docker rm id
docker rm $(docker ps -a -q)

ایستاپ و استارت کردن کانتینرها

docker stop id
docker start id

مشاهده لاگ‌های کانتینر

sudo docker logs -f id_container

اتصال به یک کانتینر در حال اجرا

sudo docker attach id

پاکسازی و مدیریت حافظه

حذف ایمیج‌های دنگلینگ

docker image prune

حذف کانتینرهای اگزیت شده

docker container prune

حذف والیوم‌های بدون استفاده

sudo docker volume prune

مشاهده وضعیت دیسک

sudo docker system df

مدیریت والیوم‌ها

تعریف والیوم در docker-compose.yml

volumes:
  - postgres-db-airflow:/var/lib/postgresql/data
  - ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh
  - ./init-sql.sql:/init-sql.sql

نکته مهم در والیوم‌ها

  • در صورتی که داکر به‌صورت عادی ران شود، دایرکتوری درون کانتینر پاک شده و دایرکتوری تعریف شده سیستم جای آن را می‌گیرد.

  • volume mount

یه name میدیم و داکر خودش هندل میکنه

  • bind mount

آدرس دستی میدیم

اجرای دستورات درون کانتینر

sudo docker exec -it id bash

Troubleshooting

دیباگ کردن کانتینری که اجرا نمی‌شود

docker run -ti image_id sh

مشاهده لاگ‌های یک کانتینر کرش‌شده

sudo docker logs -f id_container

تغییر entrypoint هنگام اجرای کانتینر

docker run -it --entrypoint /bin/sh echo-app

ورود به داکر هاب

docker login -u username -p password

بیلد کردن و ذخیره ایمیج‌ها

بیلد کردن ایمیج از Dockerfile

docker build -t name:version directory
docker build -t food:1.0 ~/test/

ذخیره و لود کردن ایمیج‌ها

sudo docker save -o ~/ngin nginx:1.0.0
sudo docker load < ngin

استفاده از PostgreSQL در داکر

اجرای PostgreSQL

docker run -itd -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=salam -p 5432:5432 -v /data:/var/lib/postgresql/data --name postgresql postgres:15-alpine

ورود به دیتابیس PostgreSQL

PGPASSWORD=salam psql -U postgres

اجرای اسکریپت SQL در دیتابیس

psql -U postgres -d news_fetcher -h localhost -p 5432 -a -f init-sql.sql

Dockerfile نمونه

FROM alpine:3.17
WORKDIR /app
COPY . /app
CMD /app/salam

مدیریت شبکه‌ها در داکر

ساخت شبکه

sudo docker network create mynetwork

مشاهده شبکه‌ها

docker network ls

مشاهده اطلاعات شبکه

docker network inspect <network-name>

پینگ گرفتن از کانتینرها درون شبکه

nslookup <container-name>
ping <container-name>

more