2018年9月10日 星期一

在 docker 的 ubuntu 安裝 dotnet 不能執行的問題解決方法

在 docker 的 ubuntu
安裝 dotnet 2.1 後
執行
root@1473781a7c69:/# dotnet --version
出現錯誤
FailFast:
Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.

安裝 ICU
apt-get install ICU
出現錯誤
E: Unable to locate package ICU

改成安裝 libicu-dev
apt-get install libicu-dev
就能正常安裝 ICU 與執行 dotnet

執行 dotnet 程式輸入
root@1473781a7c69:/home/linux-x64# dotnet Server.dll
出現錯誤
No usable version of the libssl was found
Aborted

再安裝 libssl
apt-get install libssl-dev

再把 openssl 1.1 降版本到 1.0 版
apt-get install -y --allow-downgrades openssl1.0
因為 dotnet 2.1 只支援 openssl  1.0
openssl  降版本後 dotnet 2.1 就能正常執行了


記得指令輸入前先執行 apt-get update

docker 的一些基礎操作

docker cp

複製本地檔案到 docker container
docker cp foo.txt container_id:/foo.txt
範例
docker cp foo1.txt 8b44799aacc4:/foo1.txt

複製本地目錄到 docker container
docker cp src/. container_id:/target
範例
docker cp cp_test/. 8b44799aacc4:/cp_test

複製 docker container 檔案到本地
docker cp container_id:/foo.txt foo.txt
範例
docker cp 8b44799aacc4:/foo1.txt foo.txt

複製 docker container 目錄到本地
docker cp container_id:/src/. src
範例
docker cp 8b44799aacc4:/cp_test/. cp_test1

docker save

匯出 docker 的 image 到 tar 檔案
docker save image_id > ubuntu.tar

docker export

匯出 docker container 到 tar 檔案
docker export container_id > ubuntu.tar
範例
docker export 90c79973be12 > ubuntu.tar

docker load

載入存成 tar 的 image 檔案到 docker image
docker load < ubuntu.tar

載入存成 tar 的 container 檔案到 docker image
docker import ubuntu.tar

docker ps

顯示執行中的 docker container
docker ps

顯示所有的 docker container
docker ps -a

docker stop

關閉執行中的 docker container
docker stop container_id
範例
docker stop 8b44799aacc4

docker rm

刪除 docker container(必須是關閉狀態的 container)
docker rm container_id

docker images

顯示所有 image
docker images

docker image rm

刪除 image
docker image rm image_id
範例
docker image rm 47b19964fb50

docker run

docker 用終端機模式執行未存在的 image 成為 container
docker run -it image_id
範例
docker run -it 47b19964fb50
發生錯誤訊息
docker: Error response from daemon: No command specified.
請改用
docker run -t -i 47b19964fb50 /bin/bash

docker exec

docker 用終端機模式執行已存在的 container
docker exec -it container_id
範例
docker exec 47b19964fb50

docker run -it image_id 發生錯誤的解決方法

執行 docker run -it image_id
發生了錯誤訊息
docker: Error response from daemon: No command specified.
改用
docker run -t -i image_id /bin/bash 就正常了

Visual Studio 2017/2019 推薦的擴充功能與更新

參考文章: 覺得 Google 的 Blogger 不太順手?透過 HTML 的 iframe 移花接木 HackMD