先免責聲明一下,這篇不會太深入聊Docker是什麼,
如果你已經大概了解Docker是什麼(那你幹嘛進來?)
可以把滾輪往下,看常用的docker指令喔!
或把滾輪往下,直接看我推薦的教學文章喔!
環遊非洲第15天-非洲101-Q
猜猜這些非洲國家共同說哪個官方語言?安哥拉、莫三比克、幾內亞比紹、維德角共和国、聖多美、赤道幾內亞
- 偉災大英帝國的英文!
- 我知道法語在非洲有很多人說!
- 過去西班牙佔領世界,是西班牙文!
- 跟巴西一樣說葡萄牙文!
「我寫好了一支程式,在我的電腦上可以正常運作,但搬到你的電腦上可能就爆掉」。
想像一下這種情況
你有沒有遇過這種狀況,常常要在本機安裝公司的環境,
下載了一堆軟體(PHP,一堆套件...),然後跟著Devop做設定,花了幾小時下載安裝, 軟體還是跑不動,讓你不禁想翻桌,
可能的原因:
- 缺少一些檔案(有時網路太慢,沒有安裝好)
- 套件版本不同不相容
- 有些設定檔案設定不對
再也不用依賴DevOps幫你啦, Docker 直接幫你把整包東西安裝在一個虛擬空間給你,
直接使用,用完也可以輕鬆丟掉。
Docker 最重要的就是Image,Container 和 Docker Hub
有人說Image是模具,Container是模具做出來的蛋糕,而Docker Hub是置放這些模具的層架。
(來源:Docker 基礎教學與介紹 101
)
我自己感覺比較是,
Image很像你看的室內裝潢型錄(要什麼軟體、什麼版本、設定
等詳細資料),
Container是依照你挑的型錄搭建起來的房間(虛擬空間,可以組成霍爾的移動城堡),
Docker Hub是放那些裝潢材料的倉庫。
用型錄去選你想要的裝潢,從Docker Hub拿出材料工具打造出一個霍爾城堡,
飛到你的電腦裡給你使用~想要什麼套件在虛擬房間裡應有盡有,
1.Docker Image 映像檔案
利用Docker File將所有需要安裝的套件等等整理成一個Image
Image通常會包含:
- A cut-down OS
- Runtime Environment(e.g. Node) 環境
- Application Files 檔案
- Third-party libraries 第三方套件
- Environment Variables 環境變數
引用:Docker Tutorial for Beginners
你可以到 Docker Hub去看所有已經創建好的Image。
2.Docker Hub 映像檔案庫
Docker上面存放了很多已經建立好的Image,有點像npm 套件管理庫,
讓我們可以輕鬆下載很多已經設立好的Image~
Docker Hub這裡去
3.Docker Container 容器
Container就是利用Image寫好的設定做出來的虛擬空間啦!
講到容器都會要提到虛擬機(Vertual Machine->簡稱VM)
主要不同點是容器會使用你的OS系統(正確來說是Kernal)
更不用提容器很輕量因此可以快速開啟也不會佔用太多硬體
來用Docker做個小練習,之前有工程師開心地跟我說,
他電腦裡面根本沒有Node,因為他都用 Docker的Node image
步驟拆解:
- 下載Docker
- 下載Image & 啟用
- 到虛擬容器裡面使用Node
Windows的朋友,要使用WSL才能下載使用,還有額外的設定和安裝
下載完成後,來看看Docker有沒有成功
docker version
//docker run 就是啟動的意思
//-i : interactive互動模式,開放輸入模式
//t: --tty: Docker分配一個虛擬終端機(psedu-TTY) 並綁到容器的輸出上
//node:18: 我們要使用的Image
//bin/bash: 開啟container後要執行的命令
:~$ docker run -it node:18 /bin/bash
//root表示我們是在Container裡面的root user
//10b0fc603c11是我們的虛擬機代號
//以上表示我們已經進入虛擬容器裡面囉!
root@10b0fc603c11:/# node --version
先移除Container再移除Image
//先離開虛擬container
root@10b0fc603c11:/# exit
//查看所有容器
:~$ docker ps -a
//移除容器
// rm = remove
//10b0fc603c11: 容器的ID
:~$ docker rm 10b0fc603c11
//rmi = remove image
:~$ docker rmi node:18
幫自己記錄一下常用語法,隨時更新~
docker build -t hello-docker .
docker run hello-docker (就不用pull了)
docker pull [image name]
// -it-->interactive
docker run -it ubuntu
//Into shell
//root-->最高權限使用者
//@後面就是電腦本機的代號
//#-->代表最高權限 (pound)
//若只是最基礎登入只會有$
root@jilkj789:/#
//check all the process
docker ps
docker stop [image name]
//-a for all active
docker ps -a
docker images
docker image ls
// rmi == remove image
docker rmi imageName
docker rm containerID
docker exec [image name
//run in the backround
docker run -d [image_name]
//specify version
docker dun redis:4.0
//interactive
docker run -i imageName
//t for psedo terminal
docker run -it imageName
#### mapping port
//80是本機port 5000是docker虛擬機port
docker run -p 80:5000 imageName
//run the container directing to another repo
docker run -v /etc/data/ imageName
docker inspect containerID/containerName
docker logs containerID/containerName
docker run -e APP_COLOR=red containerName
什麼!你跟我一樣看了這麼多還是一知半解嗎?
沒關係至少我們知道要怎麼操作其他大大幫我們做好的docker
下一篇就來看Docker-compose怎麼把所有虛擬空間組裝一起(這才是霍爾的移動城堡) & 來用Laradock(搭建PHP空間)
環遊非洲第15天-非洲101-A
你猜到了嗎?是4,葡萄牙文!
沒想到葡萄牙在非洲還能有一席之地,共有六個非洲國家使用葡萄牙文當官方語言。
他們也聯合組成了非洲葡萄牙語諸國(PALOP)
也和其他說葡語國家保持友好關係。