สมมุติว่าเราต้องการสร้างแอปพลิเคชันด้วย javascript ซึ่งจะเก็บข้อมูลโดยใช้แอปพลิเคชันฐานข้อมูล Mongo DB และเราจะใช้ แอปพลิเคชัน Mongo Express เพื่อจัดการกับฐานข้อมูล Mongo DB ในแบบกราฟฟิก ดังนั้นเราต้องสร้างเครือข่าย docker ขึ้นมาและบรรจุคอนเทนเนอร์ของทั้ง Mongo DB และ Mongo Express ไว้ในเครือข่ายเดียวกัน เพื่อให้สาสมารถทำงานร่วมกันได้

เพื่อทำตามความต้องการดังกล่างเราต้องใช้คำสั่งดังตัวอย่างด้านล่าง

*/สร้างเครือข่าย docker
docker network create mongo-network

*/สร้างคอนเทนเนอร์สำหรับ Mongo DB
docker run -d -p27017:27017 –name my-mongo -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secretmongo –net mongo-network mongo

*/สร้างคอนเทนเนอร์สำหรับ Mongo Express
docker run -d -p8081:8081 –name my-mongo-express -e ME_CONFIG_MONGODB_ADMINUSERNAME=mongoadmin -e ME_CONFIG_MONGODB_ADMINPASSWORD=secretmongo -e ME_CONFIG_MONGODB_SERVER=my-mongo -net mongo-network mongo-express

หากเราต้องจัดการกับคอนเทนเนอร์จำนวนมาก การต้องคีย์คำสั่งแบบนี้ทุกครั้งนอกจากจะเสียเวลาแล้วยังเสี่ยงต่อการเกิดความผิดพลาดได้ ดังนั้นเพื่อความสะดวกและลดโอกาสในการเกิดข้อผิดพลาด เราสามารถใช้ Docker Compose ในการช่วยจัดการได้ 

Docker Compose เป็นการเอาคำสั่งต่างๆมาเขียนลงในไฟล์ตามรูปแบบโครงสร้างที่กำหนด ดังตัวอย่างด้านล่าง และบันทึกไฟล์ด้วยนามสกุล yaml เช่น mongo.yaml ย่อหน้าเป็นสิ่งสำคัญสำหรับไฟล์ Docker Compose ดังนั้นห้ามผิดพลาดเด็ดขาด และจากตัวอย่างจะเห็นว่าไม่มีการกำหนดค่าเกี่ยวกับเครือข่าย ทั้งนี้เป็นเพราะ Docker Compose จะสร้างเครือข่ายเพื่อบรรจุทุกๆคอนเทนเนอร์ที่กำหนดในไฟล์ Docker Compose ให้โดยอัตโนมัติ และเราเรียกใช้งาน Docker Compose เพื่อสร้างคอนเทนเนอร์ทั้งหมดตามที่กำหนดในไฟล์ด้วยคำสั่ง docker compose -f < ชื่อไฟล์> up เช่น docker compose -f mongo.yaml up

version: ‘3’
services:
 my-mongo:
  image: mongo
   ports:
    - 27017:27017
  environment:
    - MONGO_INITDB_ROOT_USERNAME=mongoadmin
    - MONGO_INITDB_ROOT_PASSWORD=secretmongo
 my-mongoex:
  image: mongo-express
   ports:
    - 8080:8081
   environment:
    - ME_CONFIG_MONGODB_ADMINUSERNAME=mongoadmin
    - ME_CONFIG_MONGODB_ADMINPASSWORD=secretmongo
    - ME_CONFIG_MONGODB_SERVER=my-mongo

จากตัวอย่างด้านล่างเมื่อใช้คำสั่ง docker compose -f mongo.yaml up แล้วจะเห็นว่า Docker Compose สร้างเครือข่ายชื่อ marupat_default ขึ้นมาให้ จากนั้นจึงสร้างคอนเทนเนอร์ของ Mongo Express และ Mongo DB หลังจากนั้นแอปพลิเคชัน (อิมเมจ) จะถูกเรียกมาใช้งาน

สำหรับความหมายของแต่ละบรรทัดในไฟล์ Docker Compose มีดังนี้

version: ‘3’  */ เป็นเวอร์ชั่นของ Docker Compose
services: 
 my-mongo:  */ ชื่อของคอนเทนเนอร์
  image: mongo  */ชื่อของอิมเมจ
   ports:  */ ระบุการผูกพอร์ต
    - 27017:27017
  environment: */ กำหนดค่าให้ตัวแปรแวดล้อม
    - MONGO_INITDB_ROOT_USERNAME=mongoadmin
    - MONGO_INITDB_ROOT_PASSWORD=secretmongo
 my-mongoex:
  image: mongo-express
   ports:
    - 8080:8081
   environment:
    - ME_CONFIG_MONGODB_ADMINUSERNAME=mongoadmin
    - ME_CONFIG_MONGODB_ADMINPASSWORD=secretmongo
    - ME_CONFIG_MONGODB_SERVER=my-mongo

เราสามารถทดสอบการใช้งานได้โดยไปที่ locahost:8080 ซึ่งจะเข้าสู่ Mongo Express และเมื่อเราใช้งานเสร็จแล้ว หากต้องการยุติการทำงานของคอนเทนเนอร์ เราใช้คำสั่ง docker compose -f mongo.yaml down ซึ่งนอกจากจะยุติการทำงานของคอนเทนเนอร์ทั้งหมดที่ระบุไว้ในไฟล์ compose แล้วจะยกเลิกการทำงานของเครือข่ายที่ docker compose สร้างขึ้นมาด้วย

จากตัวอย่างไฟล์ yaml ด้านบน เราระบุชื่ออิมเมจเพียงแค่ชื่อเพราะคำสั่ง docker จะรู้ว่าต้องไปดาวน์โหลดจาก Docker Hub ซึ่งเป็นไปตามค่าตั้งต้นตามที่ Docker กำหนดไว้ ใน แต่ในกรณีที่เราต้องการดาวน์โหลดจากที่เก็บอื่นๆ ที่เก็บเหล่านั้นจะเก็บอิมเมจไฟล์ด้วยชื่อที่มีการระบุสถานที่เก็บไว้ด้วย เช่น 
my-company/library/my-app:version1.0 เราเพียงแค่ใช้ชื่อตามที่กำหนดไว้นั้น อิมเมจก็จะถูกดาวน์โหลดมาจากที่ที่กำหนดไว้