ติดตั้ง Docker และ Docker-compose แบบ Offline

พอดีเจอคำถามใน Docker in Thai บน Facebook และลูกค้าล่าสุดพึ่งจะถามด้วยว่า "สามารถติดตั้ง docker แบบไม่มีอินเตอร์เน็ตได้ไหม?" โดยจะเป็นการติดตั้งบน Ubuntu ผมเลยไปหาวิธีมาได้ดังนี้

Install docker offline

1. ไปที่เว็บ https://download.docker.com/linux/ubuntu/dists

2. เลือก version ของ ubuntu ที่ต้องการเช่น focal คือ ubuntu 20.x

3. แล้วก็ไปที่ path pool/stable/

4. เลือก architecture ของระบบเช่น amd64/

5. ทำการโหลด .deb แต่ตั้งละตัว version ล่าสุดมาเก็บไว้ ได้แก่ containerd.io, docker-ce-cli, docker-ce-rootless-extras, docker-ce, docker-compose-plugin, docker-scan-plugin

ตัวอย่างไฟล์ที่โหลดมา

$ ls docker-file-deb/
containerd.io_1.5.10-1_amd64.deb
docker-ce_20.10.9~3-0~ubuntu-focal_amd64.deb
docker-ce-cli_20.10.9~3-0~ubuntu-focal_amd64.deb
docker-compose-plugin_2.3.3~ubuntu-focal_amd64.deb
docker-ce-rootless-extras_20.10.9~3-0~ubuntu-focal_amd64.deb
docker-scan-plugin_0.17.0~ubuntu-focal_amd64.deb

6. ทำการอัพโหลดไปที่ server offline ของเราจากนั้นใช้คำสั่ง sudo dpkg -i docker-file-db/*deb เพื่อทำการติดตั้ง

7. ทดสอบการเรียกใช้

$ docker version
Client: Docker Engine - Community
 Version:           20.10.9
 API version:       1.41
 Go version:        go1.16.8
 Git commit:        c2ea9bc
 Built:             Mon Oct  4 16:08:29 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Install docker-compose offline

1. ดาวโหลด packet มาก่อน

$ wget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64

1.29.2 เป็นเลขเวอร์ชั่นที่ต้องการ เปลี่ยนเอานะครับ

2. เปลี่ยนชื่อซะหน่อย

$ mv docker-compose-Linux-x86_64 docker-compose

3. อัพโหลด docker-compose ไปยัง server

4. นำไปใช้งาน

$ mv docker-compose /usr/local/bin/
$ chmod +x /usr/local/bin/docker-compose

5. ทดสอบซะหน่อย

$ docker-compose version
docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

จากนั้นก็ใช้ docker load ทำการ Import image ที่ต้องการมาใช้งานได้เลย...