iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Modern Web

分手前端菜雞之旅@非洲30天系列 第 15

可以不要安裝一些有的沒的嗎?懶人救星:Docker -D15

  • 分享至 

  • xImage
  •  

可以不要安裝一些有的沒的嗎?懶人救星:Docker

免責聲明

先免責聲明一下,這篇不會太深入聊Docker是什麼,

如果你已經大概了解Docker是什麼(那你幹嘛進來?)

可以把滾輪往下,看常用的docker指令喔!

或把滾輪往下,直接看我推薦的教學文章喔!



環遊非洲第15天-非洲101-Q

猜猜這些非洲國家共同說哪個官方語言?安哥拉、莫三比克、幾內亞比紹、維德角共和国、聖多美、赤道幾內亞

  1. 偉災大英帝國的英文!
  2. 我知道法語在非洲有很多人說!
  3. 過去西班牙佔領世界,是西班牙文!
  4. 跟巴西一樣說葡萄牙文!


Docker是什麼

「我寫好了一支程式,在我的電腦上可以正常運作,但搬到你的電腦上可能就爆掉」。

引用自:Docker 基礎教學與介紹 101

想像一下這種情況

你有沒有遇過這種狀況,常常要在本機安裝公司的環境,

下載了一堆軟體(PHP,一堆套件...),然後跟著Devop做設定,花了幾小時下載安裝, 軟體還是跑不動,讓你不禁想翻桌,

可能的原因:

  1. 缺少一些檔案(有時網路太慢,沒有安裝好)
  2. 套件版本不同不相容
  3. 有些設定檔案設定不對

再也不用依賴DevOps幫你啦, Docker 直接幫你把整包東西安裝在一個虛擬空間給你,
直接使用,用完也可以輕鬆丟掉。

Docker 的組成:你的霍爾移動城堡~

Docker 最重要的就是Image,Container 和 Docker Hub

有人說Image是模具,Container是模具做出來的蛋糕,而Docker Hub是置放這些模具的層架。
(來源:Docker 基礎教學與介紹 101
)

我自己感覺比較是,

Image很像你看的室內裝潢型錄(要什麼軟體、什麼版本、設定
等詳細資料),

Container是依照你挑的型錄搭建起來的房間(虛擬空間,可以組成霍爾的移動城堡),

Docker Hub是放那些裝潢材料的倉庫。

用型錄去選你想要的裝潢,從Docker Hub拿出材料工具打造出一個霍爾城堡,

飛到你的電腦裡給你使用~想要什麼套件在虛擬房間裡應有盡有,

https://ithelp.ithome.com.tw/upload/images/20220930/20140247Am7jlwzjLK.png

圖片出處

1.Docker Image 映像檔案

利用Docker File將所有需要安裝的套件等等整理成一個Image

Image通常會包含:

  1. A cut-down OS
  2. Runtime Environment(e.g. Node) 環境
  3. Application Files 檔案
  4. Third-party libraries 第三方套件
  5. Environment Variables 環境變數

引用:Docker Tutorial for Beginners

你可以到 Docker Hub去看所有已經創建好的Image。

2.Docker Hub 映像檔案庫

Docker上面存放了很多已經建立好的Image,有點像npm 套件管理庫,
讓我們可以輕鬆下載很多已經設立好的Image~

Docker Hub這裡去

3.Docker Container 容器

Container就是利用Image寫好的設定做出來的虛擬空間啦!

Container 和虛擬機的不同

講到容器都會要提到虛擬機(Vertual Machine->簡稱VM)

主要不同點是容器會使用你的OS系統(正確來說是Kernal)
更不用提容器很輕量因此可以快速開啟也不會佔用太多硬體

Docker 練習! Node js

來用Docker做個小練習,之前有工程師開心地跟我說,
他電腦裡面根本沒有Node,因為他都用 Docker的Node image

改編自:Docker Container 基礎入門篇 1

步驟拆解:

  1. 下載Docker
  2. 下載Image & 啟用
  3. 到虛擬容器裡面使用Node

1.下載Docker

Windows的朋友,要使用WSL才能下載使用,還有額外的設定和安裝

下載完成後,來看看Docker有沒有成功

docker version

2.下載Image & 啟用

//docker run 就是啟動的意思
//-i : interactive互動模式,開放輸入模式
//t: --tty: Docker分配一個虛擬終端機(psedu-TTY) 並綁到容器的輸出上
//node:18: 我們要使用的Image
//bin/bash: 開啟container後要執行的命令
:~$ docker run -it node:18 /bin/bash

3. 到虛擬容器裡面使用Node

//root表示我們是在Container裡面的root user
//10b0fc603c11是我們的虛擬機代號
//以上表示我們已經進入虛擬容器裡面囉!
root@10b0fc603c11:/# node --version   

4. 移除Image

先移除Container再移除Image

//先離開虛擬container
root@10b0fc603c11:/# exit
//查看所有容器
:~$ docker ps -a
//移除容器
// rm = remove
//10b0fc603c11: 容器的ID
:~$ docker rm 10b0fc603c11
//rmi = remove image
:~$ docker rmi node:18

Docker 常用語法

幫自己記錄一下常用語法,隨時更新~

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)
也和其他說葡語國家保持友好關係。

https://ithelp.ithome.com.tw/upload/images/20220930/20140247GE56r1IS3Y.jpg

圖片來源



參考


上一篇
JS的Object常用方法-D14
下一篇
要裝的太多了!讓Docker-compose來幫幫忙-D16
系列文
分手前端菜雞之旅@非洲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言