ติดตั้ง Docker CE บน Ubuntu 18.04

จริงๆ แล้ว ใน Ubuntu 18.04 ก็มีแพ็กเกจ Docker ที่สามารถใช้คำสั่ง apt install ได้เลย และค่อนข้างใหม่ด้วยคือเป็นเวอร์ชัน 17.12

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

ในที่นี้ลองมาดูวิธีการติดตั้ง Docker เวอร์ชัน CE (Community Edition) บน Ubuntu 18.04 โดยติดตั้งจาก Docker Repositories

ถ้าเคยติดตั้งแพ็กเกจ docker ไว้ก่อนหน้านี้แล้ว ให้ใช้คำสั่ง apt remove เพื่อถอน (remove) การติดตั้งเวอร์ชันเดิมออกก่อน

รันคำสั่ง apt update เพื่อปรับปรุงระบบ

$ sudo apt update

ติดตั้งแพ็กเกจสำหรับใช้คำสั่ง apt ติดตั้ง repository ผ่านทาง https

$ sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

ติดตั้ง GPG Key ของ Docker

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg |\
    sudo apt-key add -

ตรวจสอบความถูกต้องของ Key ที่ติดตั้ง โดยในส่วน fingerprint ต้องแสดงค่า
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid         [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

ติดตั้ง Docker repository (stable)

$ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

รัน apt update อีกครั้ง เพื่อปรับปรุงรายชื่อแพ็กเกจ

$ sudo apt update

ใช้คำสั่ง apt install ติดตั้งแพ็กเกจชื่อ docker-ce ซึ่งเป็นชื่อแพ็กเกจของ Docer CE จาก Docker repository

$ sudo apt install docker-ce

หลังจากติดตั้งเสร็จเรียกร้อย เซอร์วิส docker จะถูกรันขึ้นมาโดยอัตโนมัติ

ตัวอย่างการใช้คำสั่ง systemctl status เพื่อตรวจสอบสถานะของเซอร์วิส docker

$ systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; ...
   Active: active (running) since Thu 2018-07-26 21:32:04 +07;...
     Docs: https://docs.docker.com
 Main PID: 3334 (dockerd)
    Tasks: 20
   CGroup: /system.slice/docker.service
           ├─3334 /usr/bin/dockerd -H fd://
           └─3353 docker-containerd --config /var/run/docker/...

ทดลองรัน docker version เพื่อแสดงข้อมูลเวอร์ชันที่ติดตั้งได้

$ sudo docker version
Client:
 Version:            18.06.0-ce
 API version:        1.38
 Go version:         go1.10.3
 Git commit:         0ffa825
 Built:              Wed Jul 18 19:09:54 2018
 OS/Arch:            linux/amd64
 Experimental:       false
 
Server:
 Engine:
 Version:            18.06.0-ce
 API version:        1.38 (minimum version 1.12)
 Go version:         go1.10.3
 Git commit:         0ffa825
 Built:              Wed Jul 18 19:07:56 2018
 OS/Arch:            linux/amd64
 Experimental:       false

โดยดีฟอลต์จากการติดตั้ง ต้องใช้ sudo เพื่อรันคำสั่ง docker แต่ถ้าเราไม่ต้องการพิมพ์คำสั่ง sudo นำหน้า สามารถทำได้โดยเพิ่มชื่อ user ที่ใช้รันคำสั่ง เข้าไปในกลุ่มชื่อ docker

ตัวอย่างการรันคำสั่ง docker ด้วย user ธรรมดา จะไม่สามารถรันได้ ขึ้น permission denied

$ id
uid=1000(alice) gid=1004(alice) groups=1004(alice),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd),1000(lpadmin),1001(sambashare),1002(debian-tor),1003(libvirtd)

$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

ใช้คำสั่ง usermod เพิ่ม user ที่ต้องการใช้รันคำสั่ง docker เข้าไปในกลุ่ม docker

$ sudo usermod -aG docker alice

ต้อง logout แล้ว login ใหม่อีกครั้ง เพื่อให้กลุ่มใหม่ที่เพิ่มมีผลกับ user

ตัวอย่างการใช้คำสั่ง id หลังจาก login ใหม่อีกครั้ง

$ id
uid=1000(alice) gid=1004(alice) groups=1004(alice),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd),999(docker),1000(lpadmin),1001(sambashare),1002(debian-tor),1003(libvirtd)

ทดลองรัน docker อีกครั้ง

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest

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

ก็จะสามารถรันได้ผลลัพธ์ที่ต้องการ

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.