iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
Software Development

Go朱尼爾的學習雜記系列 第 21

0x21 docker 指令篇

  • 分享至 

  • xImage
  •  

今天為什麼講 docker 呢?因為後面資料庫想用 docker 來開

docker 是一個把作業系統隔離出 process 可以獨立運行的環境, 每個獨立執行的叫做 container, 執行的內容由 image 提供

舉例來說:

  1. docker search ubuntu: 會列出 ubuntu image
  2. docker pull ubuntu: 把我們要的 ubuntu 抓下來
  3. docker run -it --name ubu ubuntu: 這樣就是執行 ubuntu image 命名為 ubu container
  4. docker images 可以列出全部的 image
  5. docker ps 可以列出運行中的 container (docker ps -a 列出運行/停止的 container)

所以我們可以運行多個 ubuntu container 在我們的電腦上, 同理, 我們也可以運行多個 mysql, postgresql, mongodb, 只要有人提供某個程式 images 檔案, 我們就能透過 docker run 的指令運行, 這樣真的非常方便!

基本指令

docker 實務上在看東西的時候, 常常會搭判 grep 來使用, 例如 docker ps | grep mysql, 這樣就會列出包含 mysql 字段的 container

常用的 list 指令

docker images # 列出 docker images
docker ps # 列出執行中的 docker container 
docker ps -a # 列出全部的 docker

執行 container 的指令 (以 psql 為例)

docker search postgres
docker pull postgres
docker run -it -p 5432:5432 --name mypostgres -e POSTGRES_PASSWORD=12345 -e POSTGRES_DB=testdb  postgres
# -it 是持續執行
# -p 5432:5432 是把本機的 5432 port bind container 的 5432 port
# --name 是幫 container 命名, 比較好操作 container
# -e 是提供環境變數, 官方的 docker hub 頁面可以看有哪些環境變數可以用
# 最後面的 postgres 就是 postgres image

想進入 mypostgres container 後再進入 psql shell 裡面

為了簡化提供簡單的方式

docker exec -it mypostgres bash
# exec 是執行 container 的命令
# mypostgres 的執行環境裡面有 bash 命令可以使用, 所以這行指令讓我們進入了 container 的 bash 裡面, 非常方便

psql -U postgres -W
# 密碼 12345
# 這樣就進入了 postgres 的 shell 裡面了
# \l 是看 databases

刪除 container 跟 image

docker stop mypostgres
docker container rm mypostgres
# 刪除 container 前需要停止 container

docker image rm postgres
# 刪除 image 須把相關的 container 都移除掉

小番外 透過 script 快速操作 docker

可以將以下 script 加入 .bashrc, 然後 source ~/.bashrc 一下, 就能用這四個函式了
註解內示範指令用法

# drmc = docker remove container 的意思 (分享名字思路, 可以自己換)
# $ drmc testc (刪除 testc 這個 container)
drmc(){
    sudo docker container stop $1
    sudo docker container rm $1
}

# $ drmi testi (刪除 testi 這個 image)
drmi(){
    sudo docker image rm $1
}

# 這是跑一個我自己包的 go image 命名為 god (go docker)
# $ god
god(){
    docker run -it --name god cbot918/ubugo bash
}

# docker shell bash
# $ dshba god
dshba(){
    sudo docker start $1 && docker exec -it $1 bash
}

想要從 container 包 image (筆者比較少用, 提供指令請稍微自己研究一下, 炸)

docker commit

Docker Web GUI 推薦: Portainer

優點:

  1. 社群版就很好用了
  2. 反應速度很快
  3. UX還不錯, 功能按鈕直覺好找
  4. 文件還不錯, 背後有公司在維護

缺點:如果要監控 K8S cluster, 免費版目前還沒測試成功(付費應該滿簡單的)

Install (這邊以 docker linux 做示範)

備註:官方是開 8000 port 出來, 但不知道為什麼我在 ubuntu 上面需要用 9000 port

docker run -d -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

這樣子, 瀏覽 localhost:9000, 就可以看到主控台的頁面了!

其他平台安裝頁面 ( 除了 docker 安裝也還有其他方式, 參考連結的左邊 sidebar )


上一篇
0x20 middleware 和 routerGroup
下一篇
0x22 dockerfile
系列文
Go朱尼爾的學習雜記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言