วิธีการติดตั้งนักเทียบท่าบน Ubuntu

Docker Engine รองรับ Ubuntu รุ่น 64 บิต รวมถึง 24.10 (Oracular), 24.04 LTS (Noble) และ 22.04 LTS (Jammy) บนสถาปัตยกรรม เช่น amd64 (x86_64), arm64, armhf, s390x และ ppc64le นักเทียบท่าอาศัยแบ็กเอนด์ iptables ของเคอร์เนลและทำงานร่วมกับอินเทอร์เฟซ iptables-nft หรือ iptables-legacy กฎที่สร้างขึ้นโดยตรงกับnftเครื่องมือไม่ได้รับเกียรติจากเครือข่ายนักเทียบท่า หากคุณจัดการโฮสต์ไฟร์วอลล์ด้วยufwหรือfirewalldโปรดทราบว่าการเผยแพร่พอร์ตคอนเทนเนอร์จะข้ามกฎระดับโฮสต์หลายข้อ เพิ่มนโยบายอนุญาต/ปฏิเสธลงในDOCKER-USERลูกโซ่เพื่อบังคับใช้การกรองก่อนกฎของนักเทียบท่า

ก่อนทำการติดตั้งลบแพ็คเกจ distro ที่ขัดแย้งกันเพื่อหลีกเลี่ยงการปะทะกันของเวอร์ชัน แพ็คเกจที่ไม่เป็นทางการเช่นdocker.io, มรดกdocker-composeหรือติดตั้งไว้ก่อนหน้านี้containerd-runcสามารถบล็อกการตั้งค่าใหม่ทั้งหมดได้

ขั้นตอนที่ 1:ลบแพ็คเกจเก่าหรือแพ็คเกจที่ขัดแย้งกัน

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove -y "$pkg"; done

ขั้นตอนที่ 2:ยืนยันรุ่นและสถาปัตยกรรมของ Ubuntu เพื่อให้คุณเพิ่มพื้นที่เก็บข้อมูลที่ถูกต้อง

source /etc/os-release && echo "Ubuntu codename: ${UBUNTU_CODENAME:-$VERSION_CODENAME}"; dpkg --print-architecture

วิธีที่ 1: ติดตั้ง Docker Engine จากที่เก็บ apt ของ Docker

วิธีนี้จะติดตั้ง Docker Engine และปลั๊กอินล่าสุดที่เสถียรผ่าน apt ทำให้การอัปเดตในอนาคตตรงไปตรงมาผ่านตัวจัดการแพ็คเกจของคุณ

ขั้นตอนที่ 1:ติดตั้งแพ็คเกจที่จำเป็นและเพิ่มคีย์ GPG ของ Docker โดยใช้เส้นทางพวงกุญแจที่ทันสมัย ​​(หลีกเลี่ยงการเลิกใช้งานapt-keyการใช้งาน)

sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

ขั้นตอนที่ 2:เพิ่มที่เก็บของ Docker จากนั้นรีเฟรชดัชนีแพ็คเกจ

echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu 
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

ขั้นตอนที่ 3:ติดตั้งปลั๊กอิน Docker Engine, CLI, Containerd, Buildx และ Compose

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

ขั้นตอนที่ 4:ยืนยันว่าบริการกำลังทำงานอยู่และเรียกใช้คอนเทนเนอร์ทดสอบ

sudo systemctl status docker --no-pager
sudo docker run hello-world

ขั้นตอนที่ 5:อนุญาตให้ผู้ใช้ของคุณเรียกใช้ Docker โดยไม่ต้องใช้ sudo (เป็นทางเลือก แต่สะดวก) สิ่งนี้จะเพิ่มบัญชีของคุณไปที่dockerกลุ่มซึ่งมีการเข้าถึง Docker daemon เทียบเท่ากับรูท โดยเพิ่มเฉพาะผู้ใช้ที่เชื่อถือได้เท่านั้น

sudo usermod -aG docker $USER
newgrp docker  # or log out and back in
docker run hello-world

ขั้นตอนที่ 6:อัปเกรดในภายหลังโดยใช้ apt คุณสามารถปักหมุดเวอร์ชันเฉพาะได้หากต้องการให้ตรงกับสภาพแวดล้อม

# Show available engine versions
apt-cache madison docker-ce | awk '{ print $3 }'

# Install a specific version (example version string)
VERSION_STRING=5:28.3.3-1~ubuntu.24.04~noble
sudo apt-get install -y docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

วิธีที่ 2: ติดตั้งจากแพ็คเกจ .deb ที่ดาวน์โหลดมา (อัปเกรดออฟไลน์/ด้วยตนเอง)

ใช้สิ่งนี้เมื่อโฮสต์ไม่สามารถเข้าถึงพื้นที่เก็บข้อมูลหรือเมื่อคุณต้องการการติดตั้งแบบออฟไลน์ที่ทำซ้ำได้ คุณจะต้องดาวน์โหลดไฟล์ .deb ที่ตรงกันสำหรับรุ่นและสถาปัตยกรรม Ubuntu ของคุณด้วยตนเอง

ขั้นตอนที่ 1:เรียกดูพื้นที่เก็บข้อมูล Ubuntu ของ Docker ในเบราว์เซอร์และเลือกรุ่นของคุณภายใต้dists/- จากนั้นเปิดpool/stable/<arch>/(เช่นamd64หรือarm64-

ขั้นตอนที่ 2:ดาวน์โหลดแพ็คเกจต่อไปนี้ที่ตรงกับเวอร์ชันเดียวกัน:

  • containerd.io_<version>_<arch>.deb-
  • docker-ce_<version>_<arch>.deb-
  • docker-ce-cli_<version>_<arch>.deb-
  • docker-buildx-plugin_<version>_<arch>.deb-
  • docker-compose-plugin_<version>_<arch>.deb-

ขั้นตอนที่ 3:ติดตั้งแพ็คเกจด้วยdpkg- แทนที่เส้นทางด้วยตำแหน่งที่คุณดาวน์โหลดไฟล์

sudo dpkg -i ./containerd.io_*_*.deb 
  ./docker-ce_*_*.deb 
  ./docker-ce-cli_*_*.deb 
  ./docker-buildx-plugin_*_*.deb 
  ./docker-compose-plugin_*_*.deb

ขั้นตอนที่ 4:เริ่มบริการหากไม่ได้เริ่มโดยอัตโนมัติและตรวจสอบด้วยอิมเมจทดสอบ

sudo service docker start
sudo docker run hello-world

เคล็ดลับการบำรุงรักษา:ดาวน์โหลดและติดตั้งซ้ำเมื่อคุณต้องการอัปเกรด การติดตั้งด้วยตนเองไม่เป็นไปตามการอัปเดตปกติของ apt

วิธีที่ 3: ติดตั้งด้วยสคริปต์อำนวยความสะดวกของ Docker (ตั้งค่าอย่างรวดเร็วสำหรับ dev/test)

สคริปต์ที่get.docker.comตรวจจับ distro ของคุณและติดตั้ง Docker แบบไม่โต้ตอบ รวดเร็วแต่มีความดื้อรั้นและไม่ได้ออกแบบมาเพื่อการอัพเกรดการผลิต

ขั้นตอนที่ 1:ดูตัวอย่างว่าสคริปต์จะทำอะไร

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run

ขั้นตอนที่ 2:เรียกใช้สคริปต์เพื่อติดตั้ง Docker Engine, Containerd และ Runc ที่เสถียรล่าสุด

sudo sh ./get-docker.sh

ขั้นตอนที่ 3:ตรวจสอบและกำหนดค่าการใช้งานที่ไม่ใช่รูท

sudo docker run hello-world
sudo usermod -aG docker $USER && newgrp docker

คำเตือน:การเรียกใช้สคริปต์อีกครั้งเพื่ออัปเกรดอาจทำให้การขึ้นต่อกันเป็นเวอร์ชันที่ไม่คาดคิด ใช้ตัวจัดการแพ็คเกจของคุณเพื่ออัปเกรดอย่างต่อเนื่องหลังจากบูตสแตรปครั้งแรก

ทางเลือก: ติดตั้ง Docker Desktop บน Ubuntu (GUI)

Docker Desktop รวม GUI, Docker Engine, Docker CLI, Docker Compose V2 และ Kubernetes เสริมสำหรับเวิร์กโฟลว์ของนักพัฒนา ต้องใช้ Ubuntu 22.04, 24.04 หรือเวอร์ชันล่าสุดที่ไม่ใช่ LTS บน x86‑64 ควรติดตั้งเดสก์ท็อปที่ไม่ใช่ GNOMEgnome-terminalเพื่อรองรับเทอร์มินัลแบบรวม การใช้งานเชิงพาณิชย์ในองค์กรขนาดใหญ่อาจต้องมีการสมัครสมาชิกแบบชำระเงินตามเงื่อนไขของ Docker

ขั้นตอนที่ 1:ตั้งค่าที่เก็บแพ็กเกจของ Docker (ขั้นตอนพวงกุญแจและ repo เดียวกันกับที่ใช้ในวิธีที่ 1) เพื่อให้การพึ่งพาได้รับการแก้ไขอย่างหมดจด

# If not already configured:
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu 
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

ขั้นตอนที่ 2:ดาวน์โหลด Docker Desktop .deb สำหรับ Linux (amd64) และติดตั้ง

# Example for amd64; replace with the file you downloaded
sudo apt-get install -y ./docker-desktop-amd64.deb

ขั้นตอนที่ 3:เริ่มเดสก์ท็อปและตั้งค่าให้เริ่มอัตโนมัติหากคุณต้องการ

# Start for current user session
systemctl --user start docker-desktop

# Enable on login (optional)
systemctl --user enable docker-desktop

หมายเหตุ:Docker Desktop สร้างบริบท Docker เฉพาะเพื่อหลีกเลี่ยงการปะทะกับ Engine ภายในเครื่องบนโฮสต์ สำหรับสภาพแวดล้อมเซิร์ฟเวอร์ การใช้งาน Docker Engine เพียงอย่างเดียวโดยทั่วไปจะง่ายกว่าและหลีกเลี่ยงการพึ่งพาเดสก์ท็อป

การตรวจสอบหลังการติดตั้งและงานทั่วไป

ตรวจสอบการทำงานของ Docker:การดึงและเรียกใช้อิมเมจทดสอบเป็นการพิสูจน์ว่าการเข้าถึง daemon เครือข่าย และรีจิสทรีกำลังทำงานอยู่

docker run hello-world

เรียกใช้คอนเทนเนอร์เว็บด่วน:แมปพอร์ตโฮสต์เพื่อยืนยันการเผยแพร่พอร์ต:

docker run -d -p 8080:80 --name web nginx
docker ps

เริ่มต้นการบูต (เครื่องยนต์บนเซิร์ฟเวอร์):ตรวจสอบให้แน่ใจว่า daemon เริ่มทำงานหลังจากรีบูตเครื่อง

ที่เกี่ยวข้อง:

sudo systemctl enable docker

การแก้ไขปัญหา

คำเตือน apt-key ที่เลิกใช้แล้ว:ใช้วิธีพวงกุญแจที่แสดงด้านบน (/etc/apt/keyrings/docker.asc) แทนapt-key- การดำเนินการนี้จะลบคำเตือนและเก็บคีย์ไว้ในขอบเขต repo ของ Docker

ข้อผิดพลาดในการดึงข้อมูลคีย์ GPG (ไม่มีปัญหาเกี่ยวกับเส้นทาง พร็อกซี หรือ TLS):ตรวจสอบการเชื่อมต่อขาออก 443 พร็อกซีขององค์กร หรือ DNS หากอยู่หลังพรอกซี ให้ตั้งค่าhttps_proxy-http_proxyสำหรับเปลือกของคุณและสำหรับcurl- ตรวจสอบว่าคุณสามารถเข้าถึงได้https://download.docker.com/ด้วยความเรียบง่ายcurl -I-

docker: command not found-CLI ไม่ได้ติดตั้งหรือไม่ได้อยู่ในของคุณPATH- ติดตั้งแพ็คเกจใหม่จากวิธีที่ 1 หรือตรวจสอบ/usr/bin/dockerมีอยู่จริง

ไม่สามารถเชื่อมต่อกับ Docker daemon:ตรวจสอบให้แน่ใจว่าบริการกำลังทำงานอยู่และคุณอยู่ในdockerจัดกลุ่มหากทำงานโดยไม่มี sudo

sudo systemctl status docker
sudo systemctl start docker
sudo usermod -aG docker $USER && newgrp docker

รูปภาพดึงค้างหรือล้มเหลวด้วยการหมดเวลาจับมือ TLS:ตรวจสอบการกำหนดเส้นทางอินเทอร์เน็ต, DNS หรือการกำหนดค่าพร็อกซีขององค์กร ซิงโครไนซ์เวลาของระบบ (NTP) เนื่องจากการเอียงขนาดใหญ่อาจทำให้ TLS เสียหายได้ ทดสอบซ้ำด้วยภาพที่มีน้ำหนักเบาเช่นhello-worldเพื่อแยกปัญหาการเข้าถึงรีจิสทรี

UFW/ไฟร์วอลล์และพอร์ตที่เผยแพร่:กฎ nat/forward ของ Docker สามารถข้ามนโยบายไฟร์วอลล์ของโฮสต์สำหรับพอร์ตที่เผยแพร่ได้ ใส่กฎอนุญาต/ปฏิเสธในDOCKER-USERchain เพื่อให้ได้รับการประเมินก่อนกฎของนักเทียบท่า ตรวจสอบให้แน่ใจว่าระบบของคุณใช้อินเทอร์เฟซ iptables Docker รองรับ (nft หรือแบบเดิม) แทนที่จะเป็นแบบดิบnftกฎ.

WSL ที่ไม่มี systemd:หากคุณเห็น “ระบบไม่ได้บูตด้วย systemd” ให้จัดการ Docker ผ่าน Docker Desktop สำหรับ Windows หรือเปิดใช้งาน systemd ในการตั้งค่า WSL distro ของคุณ โดยตรงsystemctlคำสั่งจะไม่ทำงานหากไม่มี systemd

ถอนการติดตั้ง Docker Engine อย่างสมบูรณ์

ขั้นตอนที่ 1:ลบแพ็คเกจ

sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

ขั้นตอนที่ 2:ลบไดเร็กทอรีข้อมูล Docker (ซึ่งจะลบรูปภาพ คอนเทนเนอร์ วอลุ่ม)

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

ขั้นตอนที่ 3:ลบ repo และพวงกุญแจหากคุณจะไม่ติดตั้งใหม่

sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/keyrings/docker.asc

เมื่อติดตั้งและตรวจสอบ Docker แล้ว คุณสามารถเริ่มคอนเทนเนอร์ได้ทันทีและจัดการคอนเทนเนอร์ด้วย Compose หรือ Buildx ได้ตามต้องการ รักษาเวลาระบบของคุณให้แม่นยำ ดูพฤติกรรมของไฟร์วอลล์ และอัปเดตผ่าน apt เพื่อให้เป็นปัจจุบันด้วยการแก้ไขด้านความปลอดภัย

Related Posts