{%hackmd BJzAwtWvp %} # docker 101(PostgreSQL) ## 參考資料 * [Docker 完全手册(2021 最新版)](https://chinese.freecodecamp.org/news/the-docker-handbook/) * [Docker筆記 - 進入Container,建立並操作 PostgreSQL Container](https://medium.com/alberthg-docker-notes/docker%E7%AD%86%E8%A8%98-%E9%80%B2%E5%85%A5container-%E5%BB%BA%E7%AB%8B%E4%B8%A6%E6%93%8D%E4%BD%9C-postgresql-container-d221ba39aaec) * [it邦 Docker 基本教學](https://ithelp.ithome.com.tw/articles/10199339) ## 簡介 * 出現於 2013 年初,最初是 Dotcloud 公司內部的 Side-Project。它基於 Google 公司推出的 Go 語言實作。( Dotcloud 公司後來改名為 Docker ) * 甚麼是容器技術container: 應用程式為中心的虛擬化 * Docker 三個基本概念 * 倉庫 repostitory * repository是集中存放映像檔檔案的場所。 * 每個repository中又包含多個映像檔。 * 每個image都有不同的標籤(tag)。 * 倉庫分為公開況(public)和私有倉庫(private)兩種形式。 * 映像檔 image * docker應向檔就是一個唯獨的模板。 * 映像檔可以用來建立docker 容器(container)。 * 容器 container * 容器是從映像檔建立的執行實例。 * docker利用container來執行應用程式。 * 可以被啟動、開始、停止、刪除。 * 每個容器都是相互隔離、保證安全的平台。 * 安裝docker * [官方文件 Get started with Docker for Mac](https://docs.docker.com/desktop/mac/) * [官方官方 Get started with Docker for Windows](https://docs.docker.com/desktop/windows/) ## 常用指令 ### image 映像檔常用指令 ``` // 搜尋有哪些image可以使用 docker search ``` NAME:映像檔名稱 DESCRIPTION:映像檔描述 STARS:越多代表越多人使用 OFFICIAL:官方Image AUTOMATED:自動化  ``` // 搜尋後下載想要使用的images docker pull ```  ``` // 現有image列表 docker images ```  ``` // 執行 docker run ``` run : 參數說明 or docker run --help 常用: -i :則讓容器的標準輸入保持打開 -t:讓Docker分配一個虛擬終端(pseudo-tty)並綁定到容器的標準輸入上 -d:背景執行 -e:設定環境變數(AAA=BBB) -p:Port 對應(host port:container port) -v:資料對應(host folder:container folder) --name:設定容器名稱 <font color=red> 在執行RUN 映像檔時,如果沒有下載會先下載在執行 **</font>  ``` // 刪除images docker rmi[imageID] // 由於執行這個images時,就會自動創建專屬於他的container,故無法刪除images。如果想要刪除的話需要1.查詢container列表 2.停止container 3. 刪除container 接著才可以刪除images ```    ``` // 建立 docker build ``` build : 使用build 指令時要先切換到Dockerfile 目錄下面 ``` // 登入 docker login // 上傳 docker push ``` ### conteainer 容器常用指令 ``` // 新建或啟動 docker run ```  ``` // 啟動 docker start [container ID] // 停止 docker stop // 刪除 docker rm [dock ID] ``` ``` // 列表 docker ps docker ps -a ``` ps : 參數說明 -a:顯示全部的容器 CONTAINER ID:容器ID IMAGE:映像檔名稱 COMMAND:執行指令 CREATED:創建時間 STATUS:容器狀態 POSTS:開啟的Port號 NAMES:容器名稱  ``` // 查看容器內的資訊 docker logs [container ID] ```   ``` // 進入容器(開啟新的console) docker exec [container ID] // 進入容器(退出停止容器) docker attach ``` ``` // 查看 docker inpect ```  ### registry 倉庫常用指令(?????) ``` // 容器存檔 docker commit // 下載 docker pull // 標籤 docker tag // 上傳 docker push // 登入 docker login // 匯出 docker export // 匯入 docker import ``` --- 開一個PostgreSQL資料庫流程 1. 第一步,開啟cmd輸入,輸入以下指令,則會從docker-hub拉下來一個image到本機,並且透過image去產生出container,也就是讓這個image運行的地方。 且有指令使此資料庫相關資料如下: 資料名稱:--name postgresql 資料庫本地Port號對此資料庫的port號"-p 5432:5432 資料庫acount:-e POSTGRES_USER=root 資料庫password-e POSTGRES_PASSWORD=root 要安裝的資料庫-d postgres ????:-d --restart=unless-stopped (ex:在CMD輸入docker run hello-world,首先呢,你在docker client透過終端機與docker daemon溝通,docker daemon是一個做事的人。 你輸入指令請求docker使用一個叫做hello-world的image docker daemon聽到後發現在你的本機端並沒有找到叫做hello-world的image,於是他就跑去docker hub拉了一個最新的(註1) 並且透過拉下來的image去產生出container。也就是你的hello-world運行的地方 最後才送回docker client端,顯示在你的terminal上。) ``` docker run --name postgresql -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=root -d postgres -d --restart=unless-stopped ``` 2. 查看建立的 ``` docker ps -a ``` ###### tags: `docker`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up