Dockerfile - что это? Первое знакомство | уроки docker | #4
İçindekiler:
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 fazlaARG
talimatı gelebilir. ETİKET - Bir resme açıklama, sürüm, yazar.. vb. Gibi meta veriler eklemek için kullanılır. Birden fazlaLABEL
belirtebilirsiniz ve herLABEL
talimatı bir anahtar / değer çiftidir. RUN - Bu talimatta belirtilen komutlar oluşturma işlemi sırasında yürütülür. HerRUN
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 birCMD
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
veADD
talimatları için geçerli çalışma dizinini ayarlar. KULLANICI - AşağıdakiRUN
,CMD
,ENTRYPOINT
,COPY
veADD
talimatlarını çalıştırırken kullanılacak kullanıcı adını veyaENTRYPOINT
. 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.
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şlayanRUN
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çinCMD
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.
Ile değiştirin ve yeniden boyutlandırın VarieDrop ile görüntüleri dönüştürün ve yeniden boyutlandırın
VarieDrop, görüntüyü sürükleyip bırakarak dönüştürmek ve yeniden boyutlandırmak için ücretsiz bir yazılımdır. VarieDrop kullanarak, görüntünüzün formatını ve boyutunu değiştirebilirsiniz.
Nasıl Metin Görüntüleri Oluşturulur Çevrimiçi Ücretsizdir
TEXT IMAGE, bmp formatlı görüntüleri dönüştürmek için kullanılabilecek ücretsiz bir çevrimiçi metin resim üretecidir kullanıcı tarafından seçilen karakterlerden oluşan bir metin görüntüsüne, gif, jpg ve png.
Ile sağ tıklama bağlam menüsünden görüntüleri yeniden boyutlandırın, düzenleyin, yükleyin, dönüştürün. Yeniden boyutlandırın, düzenleyin, yükleyin, görüntüleri kaşifden sağa çevirin. Sağ tıklama menüsü
XnView kabuk uzantısı birkaç araç ekler. ImageShack`ı kolayca önizlemenize, yeniden boyutlandırmanıza, düzenlemenize, yüklemenize, IPC meta verilerini düzenlemenize ve görüntüleri dönüştürmenize yardımcı olan içerik menüsüne sağ tıklayın.