บังเอิญว่าผมต้องติดตั้ง Node 6 ไว้บน CentOS 6.7 แต่ CentOS 6.7 ไม่มี C++11 ทำให้ติดตั้ง module ที่เป็น native บางตัวไม่ได้ ก็เลยต้องหา repo ของ devtoolset มาติดตั้ง gcc และ g++ version >= 5
ไหนๆ ก็ทำแล้วและต้องแชร์ให้ชาวบ้านเลย publish ขึ้น DockerHub ขอเขียนวิธี publish ไว้สักหน่อย
- สมัคร DockerHub จากนั้น login เข้าไปแล้ว Create Repository ตั้งชื่อของ image เพราะเราจะใช้ภายหลัง นอกนั้นก็ใส่ short description, description ไป
- docker pull <IMAGE NAME:TAG> ที่จะใช้เป็น base image ที่ต้องการลงมาก่อน อย่างกรณีของผมคือ CentOS
- ถ้ายังไม่เคยรันก็สั่ง docker run -it –name “Process name” -d <IMAGE NAME:TAG> bash ถ้าเคยรันแล้วก็สั่ง docker exec -it <PROCESS ID> bash เข้าไปใน container ติดตั้งซอฟต์แวร์เพิ่มและปรับแต่งตามสะดวก
- ออกมากจาก shell ของ container หรือเปิด terminal ใหม่
- ลอง docker images ดูจะเห็น IMAGE ID
- docker commit -m “Your messages” -a “Your name” <IMAGE ID> <USERNAME>/<REPO NAME>:TAG USERNAME คือที่เราสมัครไว้กับ DockerHub และ REPO NAME คือที่เราตั้งไว้ตอน Create Repository ถ้าสำเร็จจะได้ SHA ยาวๆ ออกมาก
- login ด้วย docker login ก็ใส่ username, password และ email ที่สมัครไว้กับ DockerHub เข้าไป
- จากนั้น push ขึ้นไปบน repository ที่เราสร้างไว้ เช่นของผม docker push khasathan/centos67-node63:v1 tag จะใส่หรือไม่ก็ได้แล้วแต่การจัดการของเรา
- หน้าจอจะแสดงสถานะการ push ใช้เวลามากน้อยแล้วแต่ขนาดไฟล์และความเร็วเน็ตครับ
อ้างอิง: https://docs.docker.com/engine/tutorials/dockerimages