Android

Dockerfile ile docker görüntüleri nasıl oluşturulur

Dockerfile - что это? Первое знакомство | уроки docker | #4

Dockerfile - что это? Первое знакомство | уроки docker | #4

İçindekiler:

Anonim

Docker görüntüsü, uygulamayı ve uygulamayı çalıştırmak için ihtiyacınız olan her şeyi içeren Docker kapsayıcılarının planıdır. Kapsayıcı, görüntünün çalışma zamanı örneğidir.

Bu öğreticide Dockerfile'ın ne olduğunu, nasıl oluşturulacağını ve Dockerfile ile bir Docker görüntüsünün nasıl oluşturulacağını açıklayacağız.

Dockerfile nedir

Dockerfile, kullanıcının görüntü oluşturmak için komut satırında çalıştırabileceği tüm komutları içeren bir metin dosyasıdır. Docker'ın görüntüyü oluşturmak için ihtiyaç duyduğu tüm talimatları içerir.

Docker görüntüleri, görüntünün Dockerfile dosyasında yürütülebilir bir yazılım uygulaması oluşturan talimatları temsil eden bir dizi dosya sistemi katmanından oluşur.

Docker dosyası aşağıdaki formu alır:

# Comment INSTRUCTION arguments

INSTRUCTION büyük / küçük harfe duyarlı değildir, ancak kural adları için UPPERCASE kullanmaktır.

En sık kullanılan Dockerfile talimatlarının bazılarının kısa bir açıklamasını içeren liste aşağıdadır:

  • ARG - Bu talimat, oluşturma anında geçirilebilen değişkenleri tanımlamanızı sağlar. Varsayılan bir değer de ayarlayabilirsiniz. FROM - Yeni bir resim oluşturmak için temel resim. Bu yönerge, Dockerfile'daki ilk yorum olmayan yönerge olmalıdır. Bu kuralın tek istisnası, FROM bağımsız değişkeninde bir değişken kullanmak istediğiniz zamandır. Bu durumda, FROM önce bir veya daha fazla ARG talimatı gelebilir. ETİKET - Bir resme açıklama, sürüm, yazar.. vb. Gibi meta veriler eklemek için kullanılır. Birden fazla LABEL belirtebilirsiniz ve her LABEL talimatı bir anahtar / değer çiftidir. RUN - Bu talimatta belirtilen komutlar oluşturma işlemi sırasında yürütülür. Her RUN komutu geçerli görüntünün üstünde yeni bir katman oluşturur. EKLE - Dosyaları ve dizinleri belirtilen kaynaktan docker görüntüsünde belirtilen hedefe kopyalamak için kullanılır. Kaynak yerel dosyalar veya dizinler veya bir URL olabilir. Kaynak yerel bir katran arşiviyse, Docker görüntüsüne otomatik olarak açılır. KOPYALA - EKLE'ye benzer, ancak kaynak yalnızca yerel bir dosya veya dizin olabilir. ENV - Bu talimat bir ortam değişkeni tanımlamanızı sağlar. CMD - Bir kapsayıcı çalıştırdığınızda yürütülecek bir komutu belirtmek için kullanılır. Dockerfile dosyasında yalnızca bir CMD talimatı kullanabilirsiniz. ENTRYPOINT - CMD benzer şekilde, bu talimat bir kapsayıcı çalıştırılırken hangi komutun yürütüleceğini tanımlar. WORKDIR - Bu yönerge, RUN , CMD , ENTRYPOINT , COPY ve ADD talimatları için geçerli çalışma dizinini ayarlar. KULLANICI - Aşağıdaki RUN , CMD , ENTRYPOINT , COPY ve ADD talimatlarını çalıştırırken kullanılacak kullanıcı adını veya ENTRYPOINT . VOLUME - Konteynere bir ana makine dizini monte etmenizi sağlar. EXPOSE - Konteynerin çalışma zamanında dinlediği bağlantı noktasını belirtmek için kullanılır.

Kime, dosya ve dizinleri görüntüye eklenmesini dışarıda bırakmak için, bağlam dizininde bir .dockerignore dosyası oluşturun. .dockerignore sözdizimi .dockerignore .gitignore dosyasındaki sözdizimine benzer.

Dockerfile talimatlarının tam bir referansı ve ayrıntılı açıklaması için resmi Dockerfile referans sayfasına bakın.

Docker dosyası oluşturma

Docker görüntüleri oluştururken en yaygın senaryo, varolan bir görüntüyü bir kayıt defterinden (genellikle Docker Hub'dan) almak ve temel görüntüde yapmak istediğiniz değişiklikleri belirtmektir. Docker görüntüleri oluştururken en yaygın kullanılan temel görüntü Alpine'dir çünkü küçüktür ve RAM'de çalışmak üzere optimize edilmiştir.

Docker Hub, Docker görüntülerini genel veya özel bir havuzda tutmak için kullanılan diğer işlevlerin yanı sıra bulut tabanlı bir kayıt hizmetidir.

Bu örnekte, Redis sunucusu için bir Docker görüntüsü oluşturacağız. En son ubuntu 18.04'ü temel görüntü olarak kullanacağız.

İlk olarak, Dockerfile dosyasını ve gerekli tüm dosyaları içerecek bir dizin oluşturun:

mkdir ~/redis_docker

Dizine gidin ve aşağıdaki Docker dosyasını oluşturun:

cd ~/redis_docker nano Dockerfile Dockerfile

FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD

Dockerfile'daki satırların her birinin anlamını açıklayalım:

  • 3. satırda temel görüntüyü tanımlarız. 3 satırda başlayan RUN komutu apt dizinini güncelleyecek, “redis-server” paketini kuracak ve apt önbelleğini temizleyecektir. Talimatlarda kullanılan komutlar, Ubuntu sunucusuna redis yüklemek için kullanacağınız komutlarla aynıdır. EXPOSE komutu, redis sunucusunun dinlediği portu tanımlar. Son satırda, varsayılan komutu ayarlamak için CMD komutunu kullanıyoruz kap çalıştırıldığında çalıştırılacaktır.

Dosyayı kaydedin ve düzenleyiciyi kapatın.

Görüntüyü Oluşturma

Bir sonraki adım görüntüyü oluşturmaktır. Bunu yapmak için Dockerfile'ın bulunduğu dizinden aşağıdaki komutu çalıştırın:

docker build -t linuxize/redis.

-t seçeneği, resim adını ve isteğe bağlı olarak 'kullanıcı adı / resimadı: etiket' biçiminde bir kullanıcı adı ve etiket belirtir.

Derleme işleminin çıktısı şuna benzer:

Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest

Oluşturma işlemi tamamlandığında, yeni görüntü, görüntü listesinde listelenecektir:

docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB

Bir Konteyneri Çalıştırma

Artık görüntü oluşturulduğuna göre, aşağıdakileri çalıştırarak bir kapsayıcı çalıştırıyorsunuz:

docker run -d -p 6379:6379 --name redis linuxize/redis

-d seçenekleri Docker'a kapsayıcıyı ayrı modda çalıştırmasını söyler, -p 6379:6379 seçeneği bağlantı noktası --name redis ana makineye --name redis ve --name redis seçeneği kapsayıcı adını belirtir. Son argüman linuxize/redis , kapsayıcıyı çalıştırmak için kullanılan görüntünün adıdır.

Kap başladığında, çalışan tüm kapsayıcıları listelemek için aşağıdaki komutu kullanın:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis

Her şeyin docker kapsayıcısına bağlanmak için redis-cli kullanması gerektiği gibi çalıştığını doğrulamak için:

redis-cli ping

Redis sunucusu PONG ile yanıt vermelidir.

Sonuç

Bu eğiticide yalnızca görüntü oluşturmak için Dockerfiles kullanmanın temelleri ele alındı. Dockerfiles yazma hakkında daha fazla bilgi ve önerilen en iyi uygulamalar için bkz. Dockerfiles yazma konusunda en iyi uygulamalar.

liman işçisi