İlk bölümde kurulum ile ilgili konulara değinmiştim. Bu bölümde bilinmesi gereken docker komutları ile bu komutların yardımı ile nasıl docker içinde derleme yapabiliriz? docker i sudo olmadan kullanabilirsiniz.
bunun için
sudo gpasswd -a $USER docker
yapar oturumu kapatıp yeniden açarsanız, restart değil, docker komutlarının başına sudo eklemezsiniz.
docker git benzeri bir komut setine sahip, git kullanıyorsanız zorlanmayacaksınız. Bir kaç adet farklı komut var.
Kurulumu ilk bölümde anlattığım şekilde yaptınız, pisi-chroot-farm imajını hub.docker.com dan çektiniz. hub.docker.com a github hesabınızla giriş yaparak bir çok imaja göz atabilirsiniz.
pisi it docker
sudo cgroupfs-mount && sudo docker -d
docker pull ertugerata/pisi-chroot-farm
En son verdiğiniz komut aşağıdaki gibi sonlandığında hazırsınız demektir. Son satırdaki docker pull ile başlayan komutu farm ile çalışacağımız gün bir kere çalıştırırsanız iyi olur. yalnızca programların sürüm ve güncellemeleri nedeni ile imajda bir kaç günde bir değişiklik olabilir. Tabii ki çalıştırmadan önce sayfadan da kontrol etmek mümkün.
Status: Image is up to date for ertugerata/pisi-chroot-farm:latest
Elimizde güncel farm imajı var; docker sevisimiz çalışıyor ve görev bekliyor.
İlk önce bir kaç temel komuttan bahsedelim. Bir terminalde
docker
yazdığımızda tüm kullanımları görürürüz. Detaylı bilgi için bu sayfayı açın.
docker
Usage: docker [OPTIONS] COMMAND [arg...]
A self-sufficient runtime for linux containers.
Options:
--api-cors-header= Set CORS headers in the remote API
-b, --bridge= Attach containers to a network bridge
--bip= Specify network bridge IP
-D, --debug=false Enable debug mode
-d, --daemon=false Enable daemon mode
--default-ulimit=[] Set default ulimits for containers
--dns=[] DNS server to use
--dns-search=[] DNS search domains to use
-e, --exec-driver=native Exec driver to use
--fixed-cidr= IPv4 subnet for fixed IPs
--fixed-cidr-v6= IPv6 subnet for fixed IPs
-G, --group=docker Group for the unix socket
-g, --graph=/var/lib/docker Root of the Docker runtime
-H, --host=[] Daemon socket(s) to connect to
-h, --help=false Print usage
--icc=true Enable inter-container communication
--insecure-registry=[] Enable insecure registry communication
--ip=0.0.0.0 Default IP when binding container ports
--ip-forward=true Enable net.ipv4.ip_forward
--ip-masq=true Enable IP masquerading
--iptables=true Enable addition of iptables rules
--ipv6=false Enable IPv6 networking
-l, --log-level=info Set the logging level
--label=[] Set key=value labels to the daemon
--log-driver=json-file Containers logging driver
--mtu=0 Set the containers network MTU
-p, --pidfile=/var/run/docker.pid Path to use for daemon PID file
--registry-mirror=[] Preferred Docker registry mirror
-s, --storage-driver= Storage driver to use
--selinux-enabled=false Enable selinux support
--storage-opt=[] Set storage driver options
--tls=false Use TLS; implied by --tlsverify
--tlscacert=~/.docker/ca.pem Trust certs signed only by this CA
--tlscert=~/.docker/cert.pem Path to TLS certificate file
--tlskey=~/.docker/key.pem Path to TLS key file
--tlsverify=false Use TLS and verify the remote
-v, --version=false Print version information and quit
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders from a container's filesystem to the host path
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Stream the contents of a container as a tar archive
history Show the history of an image
images List images
import Create a new filesystem image from the contents of a tarball
info Display system-wide information
inspect Return low-level information on a container or image
kill Kill a running container
load Load an image from a tar archive
login Register or log in to a Docker registry server
logout Log out from a Docker registry server
logs Fetch the logs of a container
port Lookup the public-facing port that is NAT-ed to PRIVATE_PORT
pause Pause all processes within a container
ps List containers
pull Pull an image or a repository from a Docker registry server
push Push an image or a repository to a Docker registry server
rename Rename an existing container
restart Restart a running container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save an image to a tar archive
search Search for an image on the Docker Hub
start Start a stopped container
stats Display a stream of a containers' resource usage statistics
stop Stop a running container
tag Tag an image into a repository
top Lookup the running processes of a container
unpause Unpause a paused container
version Show the Docker version information
wait Block until a container stops, then print its exit code
Run 'docker COMMAND --help' for more information on a command.
Bize şu anda en çok lazım olan ( ps, images, run, start, exec ) komutları.
- docker ps çalışan docker konteynerini,
- docker images mevcut olan docker imajlarını listeler.
- docker run –parametre alır– bir mevcut bir imajdan bir docker konteyneri başlatır.
- docker start –konteyner adı– mevcut bir konteyneri başlatır.
- docker exec –konteyner adı – exec komut çalışan bir konteynere bir komut gönderir, sonucunu terminale basar
- docker attach –konteyner adı– çalışan bir konteynere bağlanarak içinde çalışmayı sağlar.
İlk olarak elimizde mevcut imaj var mı bakalım; docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ertugerata/pisi-chroot-farm latest 11eded996be3 15 hours ago 548.4 MB
acaba çalışan konteynerimiz var mı?
docker ps
yok ise REPOSITORY altında sıralanmış imajlarımızdan birini çalıştırabiliriz.
docker run ertugerata/pisi-chroot-farm pisi li -b buildfarm
bu komut boş dönecek, çünkü imajımız içerisinde farm depodan kurulmuş bir paket yok. Çalışan ve boş dönen konteyner ne oluyor? Duruyor.
Bundan önce çalışmış durmuş konteynerimiz var mı? varsa onu docker start –konteyner adı– ile başlatabiliriz. Genel kural olarak aklımızda kalsın sonucu tam veren, boş dönen konteynerleri başlatmak mümkün olmuyor.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7636ccc100d5 ertugerata/pisi-chroot-farm:latest "pisi li -b buildfar 12 seconds ago Exited (0) 5 seconds ago stupefied_hoover
En sağda NAMES altındaki isim sizde farklı olabilir.
Bir servis, deamon gibi docker i çalıştıralım ve konteynerimiz çalışır beklesin.
docker run -itd ertugerata/pisi-chroot-farm bash
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4da1ee0f65dc ertugerata/pisi-chroot-farm:latest "bash" 14 seconds ago Up 13 seconds backstabbing_bardeen
konteynerin çalıştığını görüyoruz.
docker exec backstabbing_bardeen pisi li -b buildfarm
bu komut da boş dönecek.
docker attach backstabbing_bardeen
4da1ee0f65dc ~ #
Artık docker / chroot içerisindesiniz. Pisi-2.0 kaynak deposu eklidir. Depoları görün ve güncelleyin.
pisi lr
pisi ur
paketleri yapılandırmak için comar servisine yani dbus a ihtiyacınız olacak.
service dbus start
pisi bi -herhangi bir paket- -d --ignore-safety
Paketleri –ignore-safety ile derlemeyi unutmayın. derlenmediği takdirde eksikleri not alın ve Pisi-2.0 branch’ındaki pspec.xml lerin düzeltilmesini isteyin.
İyi eğlenceler.
Not. her şey derleyebilirsiniz. Ama eksik paketleri farm dan tamamlayacağı için farm dan en az indirecek şekilde başlamanız tavsiye edilir.