2020年12月25日 星期五

Docker Rename TAG(6)

先前學會建立Image後發現TAG都是latest
TAG可用來區別版本是相當好用的
先前Build時語法如下
docker build -t samplecore .
可改成
docker build -t samplecore:1.0 .
如果要修改iamge名稱和tag時可輸入
指令 Image ID REPOSITORY:TAG
docker image tag  4c575b75980e officialcore:2.0
這時刪除掉舊的1.0時會發現磁碟的容量大小沒變
他們的Image Id是一樣的
參考來源
docker image tag
Docker how to change repository name or rename image?

Docker 備份及還原Image(5)

建立了image後一定會想到到時如果換機器
或是要發佈到正式機器但又不想重新產生image
打開powershell
備份
先查看目前
docker images
指令 目的端 REPOSITORY:TAG
docker save -o d:\temp\samplecore.tar samplecore:latest
還原
指令 來源端
docker load -i d:\temp\samplecore.tar
參考來源
docker save
docker load

2020年12月24日 星期四

Docker Asp.Net Core建立Image(4)

測試了半天Dockerfile的部分還是不太懂
依微軟的的範例好像也做不太出來(功力太淺)
網路上找到了[個人筆記] docker個人筆記進行測試後修改居然可以使用
來看一下我的目錄吧
一個方案四個專案將Dockerfile放一起
撰寫Dockerfile(這邊是重點寫錯就無法成功)
內容為何可參考如何將 ASP.NET Core 2.1 網站部署到 Docker 容器中
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY coresample.language/*.csproj ./coresample.language/
COPY coresample.model/*.csproj ./coresample.model/
COPY coresample.service/*.csproj ./coresample.service/
COPY coresample.web/*.csproj ./coresample.web/

# copy everything else and build app
COPY coresample.language/. ./coresample.language/
COPY coresample.model/. ./coresample.model/
COPY coresample.service/. ./coresample.service/
COPY coresample.web/. ./coresample.web/
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
ENV ASPNETCORE_URLS=http://+:8080
WORKDIR /app
EXPOSE 8080/tcp
COPY --from=build /app .
ENTRYPOINT ["dotnet", "coresample.web.dll"]
2022-08-31補充vs2022在專案 > 右鍵 > 加入 > Docker支援也可跑出上述功能
到專案料夾底下打開powershell執行
docker build -t samplecore .
中間略...
Successfully built da35a45ea2bf
Successfully tagged samplecore:latest
開啟軟體Docker Desktop
也可輸入以下
指令 名稱 port 來源image
docker run -d  --name=MyFistApp -p 8081:80  samplecore:latest  
輸入資料 > Run
在瀏覽器中顯示
剛剛的步驟產生了許多image
藍色:IN USE的
紅色:可刪除
紫色:可留著重複使用
參考來源
[個人筆記] docker個人筆記
如何將 ASP.NET Core 2.1 網站部署到 Docker 容器中

2020年12月23日 星期三

Docker 修改Docker Root Dir位置(3)

C槽通常只給OS使用但也常爆掉
所以可將依些資料性的檔案移至D槽
打開posershell輸入docker info即可知道目前位置
舊版的位置名稱為graph
新版的位置名稱為data-root
修改方式這邊使用docker desktop內建功能如下圖加入
當然也是可以使用powershell來輸入指令看個人
"data-root": "d:\\Docker"
查詢後則自動變更資料夾也跑到指定的位置
PS:如果有原本已經掛好的image搬移後會消失
個人覺得一開始就決定好位置比較好
但萬一事後才改則將C:\ProgramData\Docker裡的檔案copy至新的位置
參考來源
How To Change Docker Data Folder Configuration

Docker 測試由Docker Hub取得image資料(2)

先來測試一下由Docker Hub取得Image資料
開啟Power Shell輸入以下便會從Docker Hub取得Image
docker pull mcr.microsoft.com/windows/servercore/iis
以下為完成訊息
Using default tag: latest
latest: Pulling from windows/servercore/iis
4612f6d0b889: Pull complete
aa4f58cd6da1: Pull complete
398f819f5bf0: Pull complete
9785ac8bf905: Pull complete
4e1656d5847d: Pull complete
Digest: sha256:8cbddbe8bace29ba7fd84cda3850d44dbdc5e20fd9183a135f048e462d4da69e
Status: Downloaded newer image for mcr.microsoft.com/windows/servercore/iis:latest
mcr.microsoft.com/windows/servercore/iis:latest
由上篇語法輸入docker images即可看到以下資料
REPOSITORY                                 TAG       IMAGE ID       CREATED       SIZE
mcr.microsoft.com/windows/servercore/iis   latest    c938e0847f9c   2 weeks ago   5.31GB
進入Docker Desktop > Images > Local也可看到資訊,然後點選Run啟動
Container Name:windows(輸入您好記得名稱)
Ports:8081(輸入您想要port)
也可輸入
指令 名稱 port 來源image
docker run -d  --name  MyFistApp -p 8081:8081  image名稱 
到Containers/Apps即可看到啟動中
在瀏覽器上輸入http://localhost:8081即可瀏覽
再次點選剛剛的image啟動Run換一個port可以在另外開一個Containers一樣開啟瀏覽器可瀏覽
以上為使用Docker Hub上的Image
參考來源
[Docker] 容器初體驗 - 搞個 IIS Container 來部署網站 https://hub.docker.com/_/microsoft-windows-servercore-iis

2020年12月18日 星期五

Docker 初學安裝Docker Desktop For Windows 10(1)

學海無涯今天來學Docker
1.先了解Docker是什麼,因個人是實作派的所以說明不是我的強項,找了看過自己覺得有兩篇寫的易懂的文章如下
a.ASP.NET Core Docker 筆記 1 - 初探
b.ocker - Docker for Windows 10 入門篇

2.安裝需求官方文件如下
What to know before you install
System Requirements
Windows 10 64-bit: Pro, Enterprise, or Education (Build 16299 or later).

For Windows 10 Home, see Install Docker Desktop on Windows Home.

Hyper-V and Containers Windows features must be enabled.
The following hardware prerequisites are required to successfully run Client Hyper-V on Windows 10:

64 bit processor with Second Level Address Translation (SLAT)
4GB system RAM
BIOS-level hardware virtualization support must be enabled in the BIOS settings. For more information, see Virtualization.
官網下載基本上下一步到底應該不會有問題

3.啟動Docker問題
Q:Cannot enable Hyper-V service
A:控制台 > 程式集 > 開啟或關閉windows功能 > 檢查Hyper-V 及Containers有沒有打勾 > 確定有後重新開機
A:以上還是不行開始使用:準備適用於容器的 Windows,管理員權限開啟powershell輸入
& $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon .
A:最後我是使用控制台開啟或關閉windows功能 > Hyper-V關掉 > 重開機 > 再開啟Hyper-V > 重開機 >可以使用Docker了

常用語法:
可顯示版本資訊
docker version
docker --version
查目前的Docker Image
docker images
查目前的Docker Container
docker ps
2022-08-31補充如輸入查詢Docker Version錯誤訊息,或是跑指令出現以下
error during connect: This error may indicate that the docker daemon is not running
可執行以下
& $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon .
網路上通常都是下面這段
cd "C:\Program Files\Docker\Docker"
./DockerCli.exe -SwitchDaemon
還是不行
windows + R輸入
services.msc
找到Docker Desktop Service 停止後再啟動
後續有再新增...

參考來源
ASP.NET Core Docker 筆記 1 - 初探
ocker - Docker for Windows 10 入門篇
開始使用:準備適用於容器的 Windows
Unable to start Docker on Windows 10: Cannot enable Hyper-V service #6772
Install Docker Desktop on Windows