GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menginstal dan Menggunakan Docker di Ubuntu 22.04

Pengantar

Docker adalah aplikasi yang menyederhanakan proses pengelolaan proses aplikasi di container . Container memungkinkan Anda menjalankan aplikasi dalam proses yang terisolasi sumber daya. Mereka mirip dengan mesin virtual, tetapi container lebih portabel, lebih ramah sumber daya, dan lebih bergantung pada sistem operasi host.

Untuk pengenalan mendetail tentang berbagai komponen container Docker, lihat The Docker Ecosystem:An Introduction to Common Components.

Dalam tutorial ini, Anda akan menginstal dan menggunakan Docker Community Edition (CE) di Ubuntu 22.04. Anda akan menginstal Docker sendiri, bekerja dengan container dan image, dan mendorong image ke Repositori Docker.

Prasyarat

Untuk mengikuti tutorial ini, Anda memerlukan yang berikut:

  • Satu server Ubuntu 22.04 disiapkan dengan mengikuti panduan penyiapan server awal Ubuntu 22.04, termasuk sudo non-root pengguna dan firewall.
  • Akun di Docker Hub jika Anda ingin membuat gambar sendiri dan memasukkannya ke Docker Hub, seperti yang ditunjukkan pada Langkah 7 dan 8.

Langkah 1 — Memasang Docker

Paket instalasi Docker yang tersedia di repositori resmi Ubuntu mungkin bukan versi terbaru. Untuk memastikan kami mendapatkan versi terbaru, kami akan menginstal Docker dari repositori Docker resmi. Untuk melakukannya, kami akan menambahkan sumber paket baru, menambahkan kunci GPG dari Docker untuk memastikan unduhan valid, lalu menginstal paket.

Pertama, perbarui daftar paket yang ada:

  1. sudo apt update

Selanjutnya, instal beberapa paket prasyarat yang memungkinkan apt gunakan paket melalui HTTPS:

  1. sudo apt install apt-transport-https ca-certificates curl software-properties-common

Kemudian tambahkan kunci GPG untuk repositori Docker resmi ke sistem Anda:

  1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Tambahkan repositori Docker ke sumber APT:

  1. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Perbarui lagi daftar paket Anda yang ada agar tambahan dikenali:

  1. sudo apt update

Pastikan Anda akan menginstal dari repo Docker alih-alih repo Ubuntu default:

  1. apt-cache policy docker-ce

Anda akan melihat output seperti ini, meskipun nomor versi untuk Docker mungkin berbeda:

Output dari kebijakan apt-cache docker-ce
docker-ce:
  Installed: (none)
  Candidate: 5:20.10.14~3-0~ubuntu-jammy
  Version table:
     5:20.10.14~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.13~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

Perhatikan bahwa docker-ce tidak diinstal, tetapi kandidat untuk instalasi berasal dari repositori Docker untuk Ubuntu 22.04 (jammy ).

Terakhir, instal Docker:

  1. sudo apt install docker-ce

Docker sekarang harus diinstal, daemon dimulai, dan proses diaktifkan untuk memulai saat boot. Periksa apakah itu berjalan:

  1. sudo systemctl status docker

Outputnya harus mirip dengan berikut ini, menunjukkan bahwa layanan aktif dan berjalan:

Output● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-01 21:30:25 UTC; 22s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 7854 (dockerd)
      Tasks: 7
     Memory: 38.3M
        CPU: 340ms
     CGroup: /system.slice/docker.service
             └─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Menginstal Docker sekarang memberi Anda tidak hanya layanan Docker (daemon) tetapi juga docker utilitas baris perintah, atau klien Docker. Kami akan menjelajahi cara menggunakan docker perintah nanti dalam tutorial ini.

Langkah 2 — Menjalankan Perintah Docker Tanpa Sudo (Opsional)

Secara default, docker perintah hanya dapat dijalankan root pengguna atau oleh pengguna di buruh pelabuhan group, yang secara otomatis dibuat selama proses instalasi Docker. Jika Anda mencoba menjalankan docker perintah tanpa awalan dengan sudo atau tanpa berada di buruh pelabuhan grup, Anda akan mendapatkan output seperti ini:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Jika Anda ingin menghindari mengetik sudo setiap kali Anda menjalankan docker perintah, tambahkan nama pengguna Anda ke docker grup:

  1. sudo usermod -aG docker ${USER}

Untuk menerapkan keanggotaan grup baru, keluar dari server dan masuk kembali, atau ketik berikut ini:

  1. su - ${USER}

Anda akan diminta memasukkan sandi pengguna untuk melanjutkan.

Konfirmasikan bahwa pengguna Anda sekarang telah ditambahkan ke buruh pelabuhan kelompokkan dengan mengetik:

  1. groups
Outputsammy sudo docker

Jika Anda perlu menambahkan pengguna ke docker grup yang tidak Anda masuki, nyatakan nama pengguna itu secara eksplisit menggunakan:

  1. sudo usermod -aG docker username

Sisa artikel ini mengasumsikan Anda menjalankan docker perintah sebagai pengguna di buruh pelabuhan kelompok. Jika Anda memilih untuk tidak melakukannya, harap tambahkan perintah dengan sudo .

Mari kita jelajahi docker perintah selanjutnya.

Langkah 3 — Menggunakan Perintah Docker

Menggunakan docker terdiri dari melewatinya rantai opsi dan perintah diikuti oleh argumen. Sintaksnya mengambil bentuk ini:

  1. docker [option] [command] [arguments]

Untuk melihat semua subperintah yang tersedia, ketik:

  1. docker

Pada versi Docker 20.10.14 , daftar lengkap sub-perintah yang tersedia meliputi:

Output  attach      Attach local standard input, output, and error streams 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 between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Untuk melihat opsi yang tersedia untuk perintah tertentu, ketik:

  1. docker docker-subcommand --help

Untuk melihat informasi di seluruh sistem tentang Docker, gunakan:

  1. docker info

Mari kita jelajahi beberapa perintah ini. Kami akan mulai dengan bekerja dengan gambar.

Langkah 4 — Bekerja dengan Gambar Docker

Kontainer Docker dibuat dari image Docker. Secara default, Docker menarik gambar-gambar ini dari Docker Hub, registri Docker yang dikelola oleh Docker, perusahaan di balik proyek Docker. Siapa pun dapat menghosting image Docker mereka di Docker Hub, sehingga sebagian besar aplikasi dan distribusi Linux yang Anda perlukan akan memiliki image yang dihosting di sana.

Untuk memeriksa apakah Anda dapat mengakses dan mengunduh gambar dari Docker Hub, ketik:

  1. docker run hello-world

Output akan menunjukkan bahwa Docker bekerja dengan benar:

OutputUnable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

...

Docker awalnya tidak dapat menemukan hello-world image secara lokal, sehingga mendownload image dari Docker Hub, yang merupakan repositori default. Setelah gambar diunduh, Docker membuat wadah dari gambar dan aplikasi di dalam wadah dijalankan, menampilkan pesan.

Anda dapat mencari gambar yang tersedia di Docker Hub dengan menggunakan docker perintah dengan search sub-perintah. Misalnya, untuk mencari gambar Ubuntu, ketik:

  1. docker search ubuntu

Skrip akan merayapi Docker Hub dan mengembalikan daftar semua gambar yang namanya cocok dengan string pencarian. Dalam hal ini, outputnya akan mirip dengan ini:

OutputNAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating sys…   14048     [OK]
websphere-liberty                WebSphere Liberty multi-architecture images …   283       [OK]
ubuntu-upstart                   DEPRECATED, as is Upstart (find other proces…   112       [OK]
neurodebian                      NeuroDebian provides neuroscience research s…   88        [OK]
open-liberty                     Open Liberty multi-architecture images based…   51        [OK]
...

Dalam RESMI kolom, Oke menunjukkan citra yang dibangun dan didukung oleh perusahaan di balik proyek tersebut. Setelah Anda mengidentifikasi gambar yang ingin Anda gunakan, Anda dapat mengunduhnya ke komputer Anda menggunakan pull sub-perintah.

Jalankan perintah berikut untuk mengunduh ubuntu resmi gambar ke komputer Anda:

  1. docker pull ubuntu

Anda akan melihat output berikut:

OutputUsing default tag: latest
latest: Pulling from library/ubuntu
e0b25ef51634: Pull complete
Digest: sha256:9101220a875cee98b016668342c489ff0674f247f6ca20dfc91b91c0f28581ae
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Setelah gambar diunduh, Anda kemudian dapat menjalankan wadah menggunakan gambar yang diunduh dengan run sub-perintah. Seperti yang Anda lihat dengan hello-world contoh, jika gambar belum diunduh saat docker dijalankan dengan run subcommand, klien Docker akan mengunduh image terlebih dahulu, lalu menjalankan container menggunakannya.

Untuk melihat gambar yang telah diunduh ke komputer Anda, ketik:

  1. docker images

Outputnya akan terlihat seperti berikut:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              1d622ef86b13        3 weeks ago         73.9MB
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB

Seperti yang akan Anda lihat nanti dalam tutorial ini, gambar yang Anda gunakan untuk menjalankan container dapat dimodifikasi dan digunakan untuk menghasilkan gambar baru, yang kemudian dapat diunggah (didorong adalah istilah teknisnya) ke Docker Hub atau registry Docker lainnya.

Mari kita lihat cara menjalankan container lebih detail.

Langkah 5 — Menjalankan Kontainer Docker

hello-world container yang Anda jalankan pada langkah sebelumnya adalah contoh container yang berjalan dan keluar setelah memancarkan pesan pengujian. Wadah bisa jauh lebih berguna dari itu, dan bisa interaktif. Bagaimanapun, mereka mirip dengan mesin virtual, hanya lebih ramah sumber daya.

Sebagai contoh, mari kita jalankan container menggunakan image terbaru Ubuntu. Kombinasi -i dan -t switch memberi Anda akses shell interaktif ke dalam wadah:

  1. docker run -it ubuntu

Prompt perintah Anda harus berubah untuk mencerminkan fakta bahwa Anda sekarang bekerja di dalam wadah dan harus mengambil formulir ini:

Outputroot@d9b100f2f636:/#

Catat id wadah di prompt perintah. Dalam contoh ini adalah d9b100f2f636 . Anda akan memerlukan ID penampung itu nanti untuk mengidentifikasi penampung saat Anda ingin menghapusnya.

Sekarang Anda dapat menjalankan perintah apa pun di dalam wadah. Misalnya, mari perbarui database paket di dalam wadah. Anda tidak perlu mengawali perintah apa pun dengan sudo , karena Anda beroperasi di dalam penampung sebagai root pengguna:

  1. apt update

Kemudian instal aplikasi apa saja di dalamnya. Mari kita instal Node.js:

  1. apt install nodejs

Ini menginstal Node.js dalam wadah dari repositori resmi Ubuntu. Saat penginstalan selesai, verifikasi bahwa Node.js telah diinstal:

  1. node -v

Anda akan melihat nomor versi yang ditampilkan di terminal Anda:

Outputv12.22.9

Setiap perubahan yang Anda buat di dalam penampung hanya berlaku untuk penampung itu.

Untuk keluar dari container, ketik exit saat diminta.

Mari kita lihat mengelola container di sistem kita selanjutnya.

Langkah 6 — Mengelola Container Docker

Setelah menggunakan Docker untuk sementara waktu, Anda akan memiliki banyak wadah aktif (berjalan) dan tidak aktif di komputer Anda. Untuk melihat yang aktif , gunakan:

  1. docker ps

Anda akan melihat output seperti berikut:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED

Dalam tutorial ini, Anda memulai dua kontainer; satu dari hello-world gambar dan lainnya dari ubuntu gambar. Kedua penampung tidak lagi berjalan, tetapi masih ada di sistem Anda.

Untuk melihat semua container — aktif dan tidak aktif, jalankan docker ps dengan -a beralih:

  1. docker ps -a

Anda akan melihat output seperti ini:

OutputCONTAINER ID   IMAGE         COMMAND   CREATED         STATUS                     PORTS     NAMES
1c08a7a0d0e4   ubuntu        "bash"     About a minute ago   Exited (0) 7 seconds ago             dazzling_taussig
587000e49d53   hello-world   "/hello"   5 minutes ago        Exited (0) 5 minutes ago             adoring_kowalevski

Untuk melihat wadah terbaru yang Anda buat, berikan -l beralih:

  1. docker ps -l
OutputCONTAINER ID   IMAGE     COMMAND   CREATED         STATUS                     PORTS     NAMES
1c08a7a0d0e4   ubuntu    "bash"    3 minutes ago   Exited (0) 2 minutes ago             dazzling_taussig

Untuk memulai container yang dihentikan, gunakan docker start , diikuti dengan ID penampung atau nama penampung. Mari kita mulai container berbasis Ubuntu dengan ID 1c08a7a0d0e4 :

  1. docker start 1c08a7a0d0e4

Wadah akan dimulai, dan Anda dapat menggunakan docker ps untuk melihat statusnya:

OutputCONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
1c08a7a0d0e4   ubuntu    "bash"    6 minutes ago   Up 8 seconds             dazzling_taussig

Untuk menghentikan container yang sedang berjalan, gunakan docker stop , diikuti dengan ID atau nama penampung. Kali ini, kita akan menggunakan nama yang diberikan Docker untuk container, yaitu dazzling_taussig :

  1. docker stop dazzling_taussig

Setelah Anda memutuskan bahwa Anda tidak lagi membutuhkan wadah, hapus dengan docker rm perintah, sekali lagi menggunakan ID wadah atau namanya. Gunakan docker ps -a perintah untuk menemukan ID wadah atau nama wadah yang terkait dengan hello-world gambar dan hapus.

  1. docker rm adoring_kowalevski

Anda dapat memulai wadah baru dan memberinya nama menggunakan --name mengalihkan. Anda juga dapat menggunakan --rm beralih untuk membuat wadah yang menghapus dirinya sendiri saat dihentikan. Lihat docker run help perintah untuk informasi lebih lanjut tentang opsi ini dan lainnya.

Wadah dapat diubah menjadi gambar yang dapat Anda gunakan untuk membuat wadah baru. Mari kita lihat cara kerjanya.

Langkah 7 — Melakukan Perubahan dalam Wadah ke Gambar Docker

Saat Anda memulai gambar Docker, Anda dapat membuat, memodifikasi, dan menghapus file seperti yang Anda bisa dengan mesin virtual. Perubahan yang Anda buat hanya akan berlaku untuk penampung tersebut. Anda dapat memulai dan menghentikannya, tetapi setelah Anda menghancurkannya dengan docker rm perintah, perubahan akan hilang untuk selamanya.

Bagian ini menunjukkan cara menyimpan status container sebagai image Docker baru.

Setelah menginstal Node.js di dalam wadah Ubuntu, Anda sekarang memiliki wadah yang menjalankan gambar, tetapi wadahnya berbeda dari gambar yang Anda gunakan untuk membuatnya. Tetapi Anda mungkin ingin menggunakan kembali wadah Node.js ini sebagai dasar untuk gambar baru nanti.

Kemudian komit perubahan ke instance image Docker baru menggunakan perintah berikut.

  1. docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

-m switch adalah untuk pesan komit yang membantu Anda dan orang lain mengetahui perubahan apa yang Anda buat, sementara -a digunakan untuk menentukan pengarang. container_id adalah yang Anda catat sebelumnya di tutorial saat Anda memulai sesi Docker interaktif. Kecuali Anda membuat repositori tambahan di Docker Hub, repository biasanya adalah nama pengguna Docker Hub Anda.

Misalnya, untuk pengguna sammy , dengan ID penampung d9b100f2f636 , perintahnya adalah:

  1. docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

Saat Anda berkomitmen gambar, gambar baru disimpan secara lokal di komputer Anda. Nanti dalam tutorial ini, Anda akan belajar cara memasukkan gambar ke registri Docker seperti Docker Hub sehingga orang lain dapat mengaksesnya.

Mencantumkan gambar Docker lagi akan menampilkan gambar baru, serta gambar lama asalnya:

  1. docker images

Anda akan melihat output seperti ini:

OutputREPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
sammy/ubuntu-nodejs   latest              7c1f35226ca6        7 seconds ago       179MB
...

Dalam contoh ini, ubuntu-nodejs adalah gambar baru, yang diturunkan dari ubuntu yang sudah ada gambar dari Docker Hub. Perbedaan ukuran mencerminkan perubahan yang dilakukan. Dan dalam contoh ini, perubahannya adalah bahwa NodeJS telah diinstal. Jadi lain kali Anda perlu menjalankan wadah menggunakan Ubuntu dengan NodeJS yang sudah diinstal sebelumnya, Anda bisa menggunakan gambar baru.

Anda juga dapat membuat Gambar dari Dockerfile , yang memungkinkan Anda mengotomatiskan penginstalan perangkat lunak dalam gambar baru. Namun, itu di luar cakupan tutorial ini.

Sekarang mari berbagi gambar baru dengan orang lain sehingga mereka dapat membuat wadah darinya.

Langkah 8 — Mendorong Gambar Docker ke Repositori Docker

Langkah logis berikutnya setelah membuat gambar baru dari gambar yang ada adalah membagikannya dengan beberapa teman Anda, seluruh dunia di Docker Hub, atau registri Docker lain yang dapat Anda akses. Untuk mendorong gambar ke Docker Hub atau registri Docker lainnya, Anda harus memiliki akun di sana.

Untuk mendorong gambar Anda, pertama-tama masuk ke Docker Hub.

  1. docker login -u docker-registry-username

Anda akan diminta untuk mengautentikasi menggunakan kata sandi Docker Hub Anda. Jika Anda menentukan sandi yang benar, otentikasi akan berhasil.

Catatan: Jika nama pengguna registri Docker Anda berbeda dari nama pengguna lokal yang Anda gunakan untuk membuat gambar, Anda harus menandai gambar Anda dengan nama pengguna registri Anda. Untuk contoh yang diberikan pada langkah terakhir, Anda akan mengetik:

  1. docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

Kemudian Anda dapat mendorong gambar Anda sendiri menggunakan:

  1. docker push docker-registry-username/docker-image-name

Untuk mendorong ubuntu-nodejs gambar ke sammy repositori, perintahnya adalah:

  1. docker push sammy/ubuntu-nodejs

Proses ini mungkin memerlukan waktu untuk diselesaikan saat mengupload gambar, tetapi setelah selesai, hasilnya akan terlihat seperti ini:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Pushed
5f70bf18a086: Pushed
a3b5c80a4eba: Pushed
7f18b442972b: Pushed
3ce512daaf78: Pushed
7aae4540b42d: Pushed

...


Setelah memasukkan gambar ke registri, itu akan terdaftar di dasbor akun Anda, seperti yang ditunjukkan pada gambar di bawah ini.

Jika upaya push menghasilkan kesalahan semacam ini, kemungkinan Anda tidak masuk:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

Masuk dengan docker login dan ulangi upaya push. Kemudian verifikasi bahwa itu ada di halaman repositori Docker Hub Anda.

Anda sekarang dapat menggunakan docker pull sammy/ubuntu-nodejs untuk menarik image ke mesin baru dan menggunakannya untuk menjalankan container baru.

Kesimpulan

Dalam tutorial ini Anda menginstal Docker, bekerja dengan gambar dan wadah, dan mendorong gambar yang dimodifikasi ke Docker Hub. Sekarang setelah Anda mengetahui dasar-dasarnya, jelajahi tutorial Docker lainnya di Komunitas DigitalOcean.


Docker
  1. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  2. Cara Menginstal dan Menggunakan Anggur di Ubuntu 20.04

  3. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  1. Cara Menginstal dan Menggunakan Docker di Ubuntu 18.04

  2. Cara Menginstal dan Menggunakan Docker Compose di Ubuntu 18.04

  3. Cara Menginstal dan Menggunakan FFmpeg di Ubuntu 18.04

  1. Cara Menginstal dan Menggunakan Anggur di Ubuntu 18.04

  2. Cara Menginstal dan Menggunakan Curl di Ubuntu 18.04

  3. Cara Menginstal dan Menggunakan Curl di Ubuntu 20.04