สรุปคำสั่ง docker ฉบับสายย่อ เด็กแนว
เอาที่สำคัญๆ หากินได้ยาวๆ
.
1) คำสั่งดูเลขเวอร์ชั่น docker engine ในเครื่อง
docker -v
.
2) คำสั่งล็อกอินเข้าไปใน docker hub (ที่เก็บไฟล์ image ของ docker)
docker login [OPTIONS] [SERVER]
.
3) คำสั่ง logout ออกจาก docker hub ...บาย บาย
docker logout
.
4) คำสั่งค้นหาไฟล์ image จาก docker hub
docker search
.
5) คำสั่งดาวน์โหลดไฟล์ image จาก docker hub มาที่เครื่องเรา
docker pull
.
6) คำสั่งรันไฟล์ image -> เพื่อสร้าง container (สร้างกี่ตัวก็ได้)
docker run [options]
.
7) คำสั่งดูรายชื่อไฟล์ images ที่อยู่ในเครื่องเรา
docker images
docker images --no-trunc // แสดง Images ID แบบเต็มๆ
.
😎 คำสั่งลบไฟล์ images
docker rmi
docker rmi -f
docker rmi -f $(docker images -a -q) // ลบทั้งหมด
.
9) คำสั่งดูรายชื่อ container
docker ps // แสดง container ที่ทำงานอยู่
docker ps -a // แสดงรายการ container ทั้งหมดที่ทำงานอยู่และหยุดทำงานไปแล้ว
.
10) คำสั่งลบ container
docker rm
docker rm -f
docker rm $(docker ps -a -q) // ลบทั้งหมด
docker rm $( docker ps -q -f status=exited) // ลบ continer ทั้งหมดที่ไม่ทำงาน
.
11) คำสั่งสั่งให้ container ทำงาน (สตาร์ท)
docker start
.
12) คำสั่งหยุด container (กลับมาสตาร์ทใหม่ภายหลังได้)
docker stop
docker stop $(docker ps -a -q) // หยุดการทำงาน container ทั้งหมด
.
13) คำสั่งแช่แข็ง container
docker pause
docker unpause
.
14) คำสั่งรีโมทเข้าไปใน container แล้วรันคำสั่ง เช่น รัน bash shell ของ linux เป็นต้น
docker exec -it
.
14) คำสั่งดูข้อมูลของ container
docker inspect
.
15) คำสั่งดูการใช้ทรัพยกรเครื่องของ container
docker stats // ทั้งหมด
docker stats
.
16) คำสั่งดู logs ของ container
docker logs
.
16) คำสั่งคำสั่งสร้างไฟล์ image
docker build [OPTIONS] PATH | URL | -
.
17) คำสั่ง commit ไฟล์ image ที่เราสร้าง
docker commit
.
18) คำสั่งส่่งไฟล์ image ขึ้น docker hub
docker image push [OPTIONS] NAME[:TAG]
.
++++++++++++++++++++
อธิบายเพิ่ม docker
++++++++++++++++++++
docker มันคือ container
ถ้าจะเรียกให้ถูกต้องเป๊ะๆ ก็คือ software container
.
จะคล้ายๆ Virtual Machine (VM)
แต่เบากว่า
Overhead น้อยกว่า
รันได้เร็วกว่า
.
container มันเป็นคอนเซปต์การสร้างสภาพแวดล้อมเฉพาะให้กับซอฟต์แวร์ เพื่อให้สามารถทำงานได้โดยไม่กวนกับซอฟต์แวร์ตัวอื่นบนระบบปฏิบัติการเดียวกัน
.
เช่น เครื่องลง PHP กับ Apache HTTP ไว้
คราวนี้พอจะรัน Tomcat แล้ว port มันชนกัน
เกิดอุบัติเหตุแบบนี้ ทำไงดีหว้า?
ต้องร้องเรียนตำรวจเลยไหม?
...ก็ไม่ต้อง
สามารถใช้ container เป็นอีกหนึ่งวิธีแก้ปัญหา
.
สำหรับคอนเซปต์ container
ให้นึกถึงว่าเรามีตู้ container ใส่ของ จำนวน 2 ตู้
ทั้งสองตู้ข้างในมีสภาพแวดล้อมเป็น Linux
.
- โดย container ตู้แรก จะติดตั้ง PHP กับ Apache HTTP ลงไป
- container ตู้ตัวที่สอง จะติดตั้ง Tomcat ลงไป
.
โดยทั้งสองตู้สามารถวางไว้ภายในระบบปฏิบัติการเดียวกัน
สามารถรันทำงานแยกสภาพแวดล้อมจากกันไปเลย
ไม่ชน ไม่ทะเลาะตบตีแย่งแฟนกัน
.....เฮยๆ ไม่ใช่ายแหละ ไม่แย่ง resource กัน
.
และเราก็สามารถย้ายตู้ container ที่มีซอฟต์แวร์ที่เราได้ติดตั้งลงไปนั้น
ก็สามารถย้ายตู้ไปไว้ที่เครื่องไหนก็ได้
ขอให้เครื่องนั้นๆ ติดตั้ง docker engine ก็พอ
(นำไฟล์ image ของ docker ไปรันบนเครื่องไหนก็ได้ขอให้มี docker engine)
.
.
.
อ้างอิง
- https://sites.google.com/.../chanwit/blogs/what-is-container
-http://www.siamhtml.com/getting-started-with-docker/
-https://medium.com/quintuples/รวม-docker-command-line-พื้นฐาน-74b61101effa
-https://memo8.com/docker-command/
.
.
.
✍ เรียบเรียงโดย โปรแกรมเมอร์ไทย thai programmer
.
.
.
มีปัญหาด้านไอทีให้ไปที่ลิงก์นี้
https://github.com/adminho/Thai-IT-community
จะมีกลุ่มเฟสบุ๊คต่างๆ รอคุณอยู่
สนใจกลุ่มไหนก็เข้าไปแจม
สามารถโพสต์ถามปัญหาที่สงสัยได้
จะมีเพื่อนๆ น่ารักคอยตอบเสมอ
「docker port」的推薦目錄:
- 關於docker port 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
- 關於docker port 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的精選貼文
- 關於docker port 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於docker port 在 針對已啟用Docker Container 修改Port | 不務正業工程師的家 的評價
- 關於docker port 在 How do I publish a UDP Port on Docker? - Stack Overflow 的評價
- 關於docker port 在 twtrubiks/docker-tutorial: Docker 基本教學 - GitHub 的評價
- 關於docker port 在 Docker Tutorial for Beginners 9 - Port Mapping | -p option 的評價
docker port 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的精選貼文
สรุปคำสั่ง docker ฉบับสายย่อ เด็กแนว
เอาที่สำคัญๆ หากินได้ยาวๆ
.
1) คำสั่งดูเลขเวอร์ชั่น docker engine ในเครื่อง
docker -v
.
2) คำสั่งล็อกอินเข้าไปใน docker hub (ที่เก็บไฟล์ image ของ docker)
docker login [OPTIONS] [SERVER]
.
3) คำสั่ง logout ออกจาก docker hub ...บาย บาย
docker logout
.
4) คำสั่งค้นหาไฟล์ image จาก docker hub
docker search
.
5) คำสั่งดาวน์โหลดไฟล์ image จาก docker hub มาที่เครื่องเรา
docker pull
.
6) คำสั่งรันไฟล์ image -> เพื่อสร้าง container (สร้างกี่ตัวก็ได้)
docker run [options]
.
7) คำสั่งดูรายชื่อไฟล์ images ที่อยู่ในเครื่องเรา
docker images
docker images --no-trunc // แสดง Images ID แบบเต็มๆ
.
8) คำสั่งลบไฟล์ images
docker rmi
docker rmi -f
docker rmi -f $(docker images -a -q) // ลบทั้งหมด
.
9) คำสั่งดูรายชื่อ container
docker ps // แสดง container ที่ทำงานอยู่
docker ps -a // แสดงรายการ container ทั้งหมดที่ทำงานอยู่และหยุดทำงานไปแล้ว
.
10) คำสั่งลบ container
docker rm
docker rm -f
docker rm $(docker ps -a -q) // ลบทั้งหมด
docker rm $( docker ps -q -f status=exited) // ลบ continer ทั้งหมดที่ไม่ทำงาน
.
11) คำสั่งสั่งให้ container ทำงาน (สตาร์ท)
docker start
.
12) คำสั่งหยุด container (กลับมาสตาร์ทใหม่ภายหลังได้)
docker stop
docker stop $(docker ps -a -q) // หยุดการทำงาน container ทั้งหมด
.
13) คำสั่งแช่แข็ง container
docker pause
docker unpause
.
14) คำสั่งรีโมทเข้าไปใน container แล้วรันคำสั่ง เช่น รัน bash shell ของ linux เป็นต้น
docker exec -it
.
14) คำสั่งดูข้อมูลของ container
docker inspect
.
15) คำสั่งดูการใช้ทรัพยกรเครื่องของ container
docker stats // ทั้งหมด
docker stats
.
16) คำสั่งดู logs ของ container
docker logs
.
16) คำสั่งคำสั่งสร้างไฟล์ image
docker build [OPTIONS] PATH | URL | -
.
17) คำสั่ง commit ไฟล์ image ที่เราสร้าง
docker commit
.
18) คำสั่งส่่งไฟล์ image ขึ้น docker hub
docker image push [OPTIONS] NAME[:TAG]
.
++++++++++++++++++++
อธิบายเพิ่ม docker
++++++++++++++++++++
docker มันคือ container
ถ้าจะเรียกให้ถูกต้องเป๊ะๆ ก็คือ software container
.
จะคล้ายๆ Virtual Machine (VM)
แต่เบากว่า
Overhead น้อยกว่า
รันได้เร็วกว่า
.
container มันเป็นคอนเซปต์การสร้างสภาพแวดล้อมเฉพาะให้กับซอฟต์แวร์ เพื่อให้สามารถทำงานได้โดยไม่กวนกับซอฟต์แวร์ตัวอื่นบนระบบปฏิบัติการเดียวกัน
.
เช่น เครื่องลง PHP กับ Apache HTTP ไว้
คราวนี้พอจะรัน Tomcat แล้ว port มันชนกัน
เกิดอุบัติเหตุแบบนี้ ทำไงดีหว้า?
ต้องร้องเรียนตำรวจเลยไหม?
...ก็ไม่ต้อง
สามารถใช้ container เป็นอีกหนึ่งวิธีแก้ปัญหา
.
สำหรับคอนเซปต์ container
ให้นึกถึงว่าเรามีตู้ container ใส่ของ จำนวน 2 ตู้
ทั้งสองตู้ข้างในมีสภาพแวดล้อมเป็น Linux
.
- โดย container ตู้แรก จะติดตั้ง PHP กับ Apache HTTP ลงไป
- container ตู้ตัวที่สอง จะติดตั้ง Tomcat ลงไป
.
โดยทั้งสองตู้สามารถวางไว้ภายในระบบปฏิบัติการเดียวกัน
สามารถรันทำงานแยกสภาพแวดล้อมจากกันไปเลย
ไม่ชน ไม่ทะเลาะตบตีแย่งแฟนกัน
.....เฮยๆ ไม่ใช่ายแหละ ไม่แย่ง resource กัน
.
และเราก็สามารถย้ายตู้ container ที่มีซอฟต์แวร์ที่เราได้ติดตั้งลงไปนั้น
ก็สามารถย้ายตู้ไปไว้ที่เครื่องไหนก็ได้
ขอให้เครื่องนั้นๆ ติดตั้ง docker engine ก็พอ
(นำไฟล์ image ของ docker ไปรันบนเครื่องไหนก็ได้ขอให้มี docker engine)
.
.
.
อ้างอิง
- https://sites.google.com/site/chanwit/blogs/what-is-container
-http://www.siamhtml.com/getting-started-with-docker/
-https://medium.com/quintuples/รวม-docker-command-line-พื้นฐาน-74b61101effa
-https://memo8.com/docker-command/
.
.
.
✍ เรียบเรียงโดย โปรแกรมเมอร์ไทย thai programmer
docker port 在 矽谷牛的耕田筆記 Facebook 的精選貼文
本篇文章要來探討 Kubernetes/Docker 一些關於 connection timeout 的事情,文章非常長,這邊幫大家重點整理
1. 跟我之前分享的 DNS timeout 問題類似,都會踩到 Kernel 的 race condition,都是 __ip_conntrack_confirm 這個人丟掉大家封包的
2. 本文著重於怎麼發現這個問題,如何減緩這個問題。對於喜歡研究細節的人值得一看。
3. 2017年底作者團隊開始將服務遷移到 Kubernetes (v1.8), Flannel(1.9.0),開始發現團隊中基於 Scala 的應用程式出現封包 timeout 的問題,這導致部分請求回應都延遲1-3秒
4. 決定認真調查網路問題,經由研究與錄製封包後發現 TCP 重送(SYN)的現象,該現象導致第一個封包會特別慢
5. 接下來要縮小範圍,使用環境中的一個VM作為基底,上面安裝 docker,開始觀察相關的網路流量與封包,發現可以重製這個行為,第一個封包從容器出去後,宿主機上面的真實網卡卻看不到,直到下次第二個封包就可以。藉由這個行為他們判斷,問題出在VM上,跟底層其餘硬體架構無關,藉此縮小問題範圍。
6. 介紹 iptalbes + SNAT + conntrack
7. 問題發生在 Kernel 裡面針對 SNAT 去選擇對外 source IP 時會出錯,因為(1)挑選一個適當的 source port, (2)將該紀錄寫到 conntrack 這兩個步驟中間會有落差,因此如果兩個封包同時進入(1),選到一樣的結果,後續要跑(2)就會有一個人寫不進去,導致封包被丟棄
8. 一種解決方法是告訴 kernel 請隨機幫我挑選對外的 source port, 這樣就算大家同時執行(1),有很大的機會會挑到不同的 source port,藉此減少衝突的機會。
9. iptables 執行 --masquerate 的時候可以下 --random-fully 這個參數
10. 團隊當時客製化 Flannel 來解決這個問題
註: 對 SNAT 有興趣瞭解的可以參考我之前撰寫的 SNAT Kernel 原始碼閱讀文章
https://www.hwchiu.com/iptables-masquerade.html
https://www.hwchiu.com/iptables-masquerade-handson.html
https://tech.xing.com/a-reason-for-unexplained-connection-timeouts-on-kubernetes-docker-abd041cf7e02
docker port 在 twtrubiks/docker-tutorial: Docker 基本教學 - GitHub 的推薦與評價
Docker 基本教學- 從無到有Docker-Beginners-Guide 教你用Docker 建立Django + PostgreSQL ... -p 代表將本機的80 port 的所有流量轉發到container 中的80 port. ... <看更多>
docker port 在 針對已啟用Docker Container 修改Port | 不務正業工程師的家 的推薦與評價
假如某一天,你突然想改變port 的對應或者是新增或移除port ,該怎麼做呢? ... <看更多>