Docker安裝及使用
1、以管理員身份運行PowerShell,執行以下命令:Enable-WindowsOptionalFeature-Online-FeatureName Microsoft-Hyper-V-All(在線安裝Windows的虛擬環境)
2、安裝Docker
3、管理員PowerShell輸入wsl--install,然后重啟計算機來安裝運行適用於Linux的Windows子系統(WSL)所需的全部內容
4、打開PowerShell,然后在安裝新的Linux發行版時運行以下命令,將WSL2設置為默認版本wsl--set-default-version 2
5,Microsoft Stroe安裝Liunx子系統
6、安裝之后,可以打開PowerShell並運行以下命令檢測是否運行成功:docker run hello-world
docker安裝完成后下載需要的鏡像
查看具體的鏡像:
windows中的命令:
docker image ls | findstr hello-world
mac&linux的命令:
docker image ls | grep hello-world
docker run -it --name centos_test centos:7.8.2003
#docker run ---》運行鏡像
-it:交互式命令
--name:指定運行鏡像名稱
centos:7.8.2003:要被運行的鏡像
一個鏡像被運行后,后稱為一個容器
使用一個新的控制台,使用命令查看容器運行的記錄:
docker ps -a
刪除容器的記錄信息:
docker rm 容器的ID
如果出現無法刪除就需要先退出在進行刪除
docker stop 容器ID:停止容器
docker rm 容器ID: 刪除容器
運行完后自動退出
docker run --rm -it --name centos_test centos:7.8.2003
刪除鏡像:
1、依據鏡像的名稱刪除
2、依據鏡像的ID來刪除
如果遇到無法刪除的鏡像,說明這個鏡像很有可能在運行中這時 就需要先停止它,再刪除鏡像的運行記錄,然后再去刪除
具體步驟:
1、在容器中停止它的運行
2、在容器中刪除它的記錄
3、根據鏡像的名字或者ID來刪除該鏡像
docker rmi $(docker images -q) :批量刪除所有的鏡像(max的命令)
#docker images -q:獲取鏡像的ID
#$(docker images -q) :返回所有的鏡像ID
鏡像導入導出的場景:
異地的辦公模式,那么場景就是:異地的開發同學寫完代碼后,然后把自己的
應用程序打包成鏡像,打包成鏡像后,發送給測試同學,測試同學運行鏡像(前
提是把鏡像導入中docker中),鏡像運行成功后,等於環境部署成功,可以測試
通許可以開始測試了。
開發同學操作:
開發同學操作:
1、寫代碼
2、寫的代碼打包成鏡像
A、執行代碼的依賴環境(比如寫的代碼需要在Linux上執行,那么就需要Linux的環境)
B、執行代碼本身的環境(比如java的環境需要jdk)
3、把鏡像導出
導出命令:docker image save :latest(被導出的鏡像) -o (導出的鏡像在本本地存儲的目錄)
4、發送給測試同學
測試同學操作:
1、接收開發發送的鏡像
2、導入鏡像到docker中(測試接收到鏡像文件后,會把鏡像文件通過scp命令上傳到Linux的服務器(測試環境),然后再導入
導入命令:
docker image load -i (被導入的鏡像存儲目錄)
#導入鏡像成功后輸出的信息
3、運行鏡像docker run -p8080:8080 -d(后台的方式去運行) app
4、驗證環境部署是否OK
http://localhost:8081/index#端口為Dockerfile文件中給定的端口
http://localhost:8081/testDev
5、開始測試
docker run 鏡像名稱 這個過程可以理解為:把鏡像文件創建成docker容器的一部分,然后再進行啟動。特別需要注意的是:
容器內的進程必須是前台運行狀態,否則容器直接退出。還有一點特別需要提醒的是:docker run 鏡像名 如果鏡像文件在本地不存在,
就會在線去下載該鏡像的資源信息,如:
docker run -it --rm hello-word
容器命令
在運行鏡像中,后面需要帶一些指令的信息,這些指令的信息具體匯總為如下: • -d:后台運行
• -it:交互式命令
• --rm:容器掛掉后自動被刪除
• --name:給容器起一個名字
• -p:端口映射
容器信息的查看:
#linux
docker ps -a | grep 容器ID
#windows
docker ps -a | findstr 容器ID
#查看容器的詳細的信息
docker container inspect 容器ID
查看容器的日志步驟:
1、運行鏡像
docker run -it --rm centos
2、查看運行中的容器的ID信息
docker ps -a
3、獲取到容器的ID后,查看容器實時的日志信息
docker logs -f 容器ID
docker logs -f 容器ID:查看實時的日志文件內容,如果想退出,就需要按ctrl+c
docker logs 容器ID:一次性查看所有的日志文件內容
docker logs 容器ID | tail -10:查看最新的10行日志文件(日志文件最后的內容)#僅僅適用於Linux的系統
docker logs -f -t --tail 行數 容器ID #(win系統)-f詳細信息-t時間戳
docker logs 容器ID | head -10:查看日志文件最前面的10行
容器提交
容器的提交解決了什么?
解決了容器中安裝的環境,但是必須在容器退出前要進行提交,如果沒有提交,那么退出后,安裝的環境等於再次安裝。
退出vim的步驟:
1、按下esc鍵
2、按下shift+:
3、:后面輸入q!,按下回車鍵,就會退出
容器提交的步驟:
1、運行鏡像,到容器后
2、在容器里面進行具體的操作(比如安裝軟件,比如搭建環境等等),但是容器千萬不能退出
3、打開一個新的控制台,查看到容器的ID
docker ps -a
4、對容器進行提交
docker commit 容器ID 鏡像新的名稱 如下:
docker commit 8642918b44c centos_vim(注意鏡像ID和名稱中間有空格)
5、待容器提交成功后,之前的容器進行退出
6、查看所有的鏡像,就會發現存在centos_vim的鏡像
7、運行新的鏡像文件,如:
docker run -it --rm centos_vim
1、如果經常名稱是none ,那么就不會復制,直接把none的鏡像名稱修改為新的鏡像名稱
2、如果鏡像名稱不是none,那么在此修改,等價於復制

1、獲取nginx的鏡像:docker pull nginx
2、端口映射:-p 80(宿主機的端口):80(容器里面的端口)
3、后台方式運行容器:
docker run -d -p 80:80 nginx
4、查詢容器的端口:docker port 容器的ID(容器必須運行中)
docker port eea35abc9elc
dockerfile
Dockerfile概述
使用dockerfile主要是用於構建docker鏡像文件信息,相當於一個腳本,通過dockerfile自己的指令,來構建軟件依賴,文件依賴,存儲等等情況。
Dockerfile使用
在docker中創建鏡像可以分為兩個方法,這兩個方法具體可以總結為如下:
• 手動修改容器內容,然后docker commit提交容器為新的鏡像文件
• 通過在dockerfile中定義一系列的命令和參數構成的腳本,然后這些命令應用於基礎鏡像,依次添加層,最終生成一個新的鏡像,這樣就極大的簡化了部署的工作。
Dockerfile組成部分
dockerfile的主要組成部分可以匯總為:
• 基礎鏡像信息
• 制作鏡像操作指令 RUM
• 容器啟動時執行指令CMD["/bin/bash"]
Dockerfile基本指令
dockerfile的指令主要可以匯總為如下,使用dockerfile的前提是學習會這些指令的基本使用,具體如下: • FROM #指令基礎鏡像 • MAINTAINER #指定維護者信息,也可以沒有
• RUN #具體執行的操作,在命令前面加上RUN即可
• ADD #COPY文件,會自動進行解壓
• WORKDIR #設置當前工作目錄
• VOLUME #設置卷,掛載主機目錄
• EXPOSE #指定對外的端口
• CMD #指定容器啟動后需要干的事情
• COPY #復制文件
• ENV #環境變量
• ENIRYPOINT #容器啟動后執行的命令
構建鏡像
在本地創建一個名為dockerfile的文件(注意這里沒有后綴,其他名稱無法識別)
文件內容:
FROM centos:7.8.2003
MAINTAINER 晨黎 #作者
ENV name Docker #定義一個變量,變量的值是Docker
ENTRYPOINT echo "Hello $name" #運行程序,輸出變量的值
在控制台打開這個文件的路徑,然后docker build .
build時首次或出現Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them這么一個提示,使用"docker 掃描"對映像運行 Snyk 測試
1、docker scan 輸入命令后,再輸入y
2、登錄到docker hub的賬戶
docker login 輸入后,輸入docker hub的賬戶和密碼
3、再次開始構建鏡像
docker build -t centos_name -f Dockerfile .
這時就好了。如果無法登錄,這時我們在這里登錄,后控制台就默認登錄成功。
構建成功
在本地常見創建dockerfile文件
文件內容
出現這種情況是時 ,先去檢查自己的dockerfile文件,這種情況是dockerfile文件出錯了在 /bin/sh 查找命令之前,["java",
它發現了不能識別的的問題。
常用,不能被占用的端口:
80:web默認端口
443:安全協議
25 :郵件服務
22:ssh服務端口
ipconfig #查詢到IP的地址
ifconfig