Android

Docker konteynerine nasıl bağlanır

03. Docker Compose и Best Practice Docker, CI/CD и Gitlab CI. Вечерняя школа Слёрма по Kubernetes.

03. Docker Compose и Best Practice Docker, CI/CD и Gitlab CI. Вечерняя школа Слёрма по Kubernetes.

İçindekiler:

Anonim

Çalışan bir Docker kapsayıcısına bağlanmak, kap içinde neler olduğunu görmek istediğinizde yardımcı olur. Docker kapsayıcısı beklendiği gibi çalışmazsa, kapsayıcıya yapıştırabilir veya kapsayıcıya bir kabuk alabilir ve ps veya top gibi komutları çalıştırabilirsiniz. Ayrıca, kapsayıcıya girebilir, yeni paketler yükleyebilir ve ondan yeni bir Docker görüntüsü oluşturabilirsiniz.

Bu öğreticide, kabın ana çalışan işlemine nasıl ekleneceğini ve çalışan bir kaba nasıl kabuk alınacağını açıklayacağız.

Bir Konteynere Bağlama

Bir kapsayıcıda birden çok işlem yürütmek mümkün olsa da, çoğu docker kapsayıcısı yalnızca tek bir işlem çalıştırır. Bir kapsayıcı başlatılırken yürütülen komut ENTRYPOINT ve / veya RUN komutu kullanılarak belirtilir.

docker attach komutu terminalinizi çalışan konteynere eklemenizi sağlar. Bu, standart çıktıda ne yazıldığını gerçek zamanlı olarak görmek veya süreci etkileşimli olarak kontrol etmek istediğinizde kullanışlıdır.

attach komutunun nasıl çalıştığını daha iyi anlamak için, resmi Nginx görüntüsünü kullanarak yeni bir ayrılmış Nginx kapsayıcısı çalıştıralım.

docker container run --name my_nginx -d -p 8080:80 nginx

-p 8080:80 seçeneği Docker'a konteynerin 8080 numaralı bağlantı noktasını ana makine üzerindeki 80 numaralı bağlantı noktasına bağlamasını söyler.

“My_nginx” konteynerinin çalıştığından emin olmak için kapları listeleyin:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e1c4974a8d8 nginx "nginx -g 'daemon of…" 3 minutes ago Up 2 seconds 0.0.0.0:8080->80/tcp my_nginx

Konteynır kimliğini veya adını kullanarak konteynere ekleyin:

docker container attach my_nginx

Kapsayıcıyı çalıştırdığınızda yürütülen nginx görüntüsünün varsayılan komutu CMD olarak ayarlanır. attach komutunu çalıştırdığınızda terminaliniz nginx işlemine eklenir.

Tarayıcınızda 127.0.0.1:8080 açın ve nginx işleminin çıktısını gerçek zamanlı olarak izleyebilirsiniz.

192.168.33.1 - - "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-" 192.168.33.1 - - "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.33.71:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"

Konteyner günlüklerine erişmek için docker logs komutunu kullanmayı tercih etmelisiniz.

Kaptan durdurmadan ayırmak için CTRL-p CTRL-q tuş bileşimini kullanın. CTRL-c tuşuna basmak kabı durdurur.

Eklemekte olduğunuz çalışan işlemler girişi kabul ederse, ona talimatlar gönderebilirsiniz.

Bir Konteynere Kabuk Alın

docker exec komutu, çalışan bir kapsayıcı içindeki komutları çalıştırmanıza izin verir.

exec komutunun nasıl çalıştığını ve kap kabuğuna girmek için nasıl kullanılabileceğini görmek için, önce yeni bir kap başlatın. Resmi MySQL görüntüsünü kullanacağız:

docker container run --name my_mysql -d mysql

Bu, “my_mysql” adlı bir kap oluşturur.

Kapsayıcı içinde bir komut yürütmek için aşağıdaki komutu çalıştırın:

docker container exec -it my_mysql ls /var

-i seçeneği etkileşimli anlamına gelir ve -t , Docker'a sahte bir TTY aygıtı -t söyler. ls komutu, kabın /var dizinindeki tüm dosyaları ve dizinleri listeler:

backups cache lib local lock log mail opt run spool tmp

Kabın bir kabuğunu almak için, yani kabın içine girmek için, kabuk ikili dosyasını yürüterek yeni bir kabuk oturumu başlatın. Görüntüde bulunan sh , bash veya başka bir kabuk kullanabilirsiniz.

Aşağıdaki komut, kapsayıcı içinde yeni bir Bash oturumu oluşturur:

docker container exec -it my_mysql /bin/bash

Komut isteminiz artık konteyner kabuğunda çalıştığınızı gösterecek şekilde değişecektir.

Buradan, komutları diğer herhangi bir Linux sunucusunda yaptığınız gibi çalıştırabilirsiniz. Örneğin, geçerli ortam değişkenlerinin bir listesini almak için env :

env

Çıktı şöyle görünecektir:

HOSTNAME=e0214d97e0fe MYSQL_ROOT_PASSWORD=my-secret-pw PWD=/ HOME=/root MYSQL_MAJOR=8.0 GOSU_VERSION=1.7 MYSQL_VERSION=8.0.17-1debian9 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin _=/usr/bin/env

Sonuç

docker exec ve docker attach komutları, çalışan bir kapsayıcıya bağlanmanıza izin verir. Bir kapsayıcıya etkileşimli bir kabuk almak için yeni bir kabuk oturumu başlatmak üzere exec komutunu kullanın. attach komutu terminalinizi çalışan bir kaba bağlar.

liman işçisi