Membuka port dengan Dockerfile

Docker Tingkat Menengah

Mike Metzger

Data Engineer

Mengekspos layanan

  • Perintah EXPOSE
  • Menentukan port yang digunakan container saat runtime
  • Dapat ditulis sebagai <number>, <number>/tcp, atau <number>/udp
    • Misalnya EXPOSE 80 atau EXPOSE 80/tcp
  • Boleh lebih dari satu entri
  • Digunakan sebagai dokumentasi
Docker Tingkat Menengah

Menggunakan flag -p / -P

  • Tetap perlu opsi -p atau -P pada docker run agar port tersedia di luar container
  • Opsi -P otomatis memetakan port ephemeris ke port yang diekspos. Gunakan docker ps -a untuk melihat port yang dipetakan.
  • Gunakan -p<host port>:<container port> untuk port spesifik.
Docker Tingkat Menengah

Contoh EXPOSE

# Dockerfile
FROM python:3.11-slim
ENTRYPOINT ["python","-mhttp.server"]
# Beri tahu Docker Engine
# port 8000 harus tersedia
EXPOSE 8000
  • Buat container dari image
    docker run pyserver
    
  • Tampilkan status container
    docker ps -a
    
CONTAINER ID   IMAGE         ...   PORTS      NAMES
8c3d320255ae   pyserver      ...   8000/tcp   angry_chaum
Docker Tingkat Menengah

Membuat port dapat diakses

  • Otomatis memetakan port sementara dari host ke container
    docker run -P pyserver
    
docker ps -a
CONTAINER ID   IMAGE      ...   PORTS                     NAMES
6bb458ef25da   pyserver   ...   0.0.0.0:55001->8000/tcp   beautiful_lamarr
Docker Tingkat Menengah

Menemukan port yang diekspos

  • docker inspect menyediakan banyak informasi
    docker inspect <id>
    
"NetworkSettings": {
  "Bridge": "",
  "Ports": {
    "8000/tcp": [{
                   "HostIp": "0.0.0.0",
                   "HostPort": "55001"
                    }]
            },
...
Docker Tingkat Menengah

Ayo berlatih!

Docker Tingkat Menengah

Preparing Video For Download...