Docker 常用命令(.NET Core示例)

来源:https://www.cnblogs.com/heyuquan/archive/2020/04/14/docker-cmd-and-dotnetcore.html
-Advertisement-
Play Games

整理docker中常用的命令,方便大家學習和命令查詢。最後分享一個.NET Core docker部署的示例 ...


       本篇文章,整理docker中常用的命令,方便大家學習和命令查詢。最後分享一個.NET Core docker部署的示例。

Docker安裝 CentOS Docker 安裝 安裝 Docker Desktop for Mac、Docker Desktop for Windows 設置docker倉庫鏡像加速器 遷移Docker預設存儲目錄   Docker運行基本命令 docker [--helper]:顯示所有docker命令 docker [command] --help:顯示指定命令的幫助文檔 docker info:顯示docker系統信息 docker version:顯示docker版本信息 docker stats:顯示運行的容器占用的容器資源(eg:容器名、cpu、記憶體、io等)(Ctrl+C退出) systemctl status docker:顯示docker的運行狀態 systemctl start docker:啟動docker systemctl stop docker:關閉docker systemctl restart docker:重啟docker     Docker倉庫 Docker Hub docker login -u 用戶名 -p 密碼 [倉庫地址]登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,預設為官方倉庫 Docker Hub docker logout:推出倉庫 docker search [image id or name]:從Docker Hub查找鏡像 docker pull [image id or name]:拉取鏡像 docker tag [local image id or name]:[tag] [registry host]/[鏡像倉庫]/[image name][:tag]: 標記本地鏡像,將其歸入某一倉庫。 docker push [image id or name]:推送鏡像到Docker Hub   #、示例:推送到阿裡雲images倉庫 sudo docker login --username=*** registry.cn-shenzhen.aliyuncs.com sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin:[鏡像版本號] sudo docker push registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin:[鏡像版本號] (registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin 為images倉庫地址)   images 操作 docker tag [image id] REPOSITORY:TAG(倉庫:標簽):重命名鏡像名 docker images [options]:顯示所有鏡像文件 常用OPTIONS說明: -a :列出本地所有的鏡像 -f :顯示滿足條件的鏡像; -q :只顯示鏡像ID docker image inspect : 獲取鏡像的元數據。 docker build [options] [image id or name] .:構建一個鏡像。 (註意:最後空格後面有一個.)。 常用OPTIONS說明: --tag, -t: 鏡像的名字及標簽,通常 name:tag 或者 name 格式; -f :指定要使用的Dockerfile路徑;(預設當前目錄的Dockerfile) -m :設置記憶體最大值; docker rmi [-f] [image id or name]:刪除指定鏡像(-f :強制刪除) docker rmi $(docker images -q):刪除所有鏡像 docker commit [container id or name] [image id or name[:tag]]:從容器創建一個新的鏡像。 docker images | grep "redis" :查詢所有包含redis的鏡像   示例: clipboard 註意:REPOSITORY 列,表示:鏡像名稱,用於標識鏡像   #、鏡像歸檔 將指定鏡像保存成 tar 歸檔文件 docker save -o /root/**.tar [image id or name]: docker save [image id or name]>/root/**.tar 導入使用 docker save 命令導出的鏡像 docker load -i /root/**.tar docker load</root/**.tar 從歸檔文件中創建鏡像 docker import /root/**.tar [image id or name]:從鏡像歸檔文件創建指定命名的鏡像     container 操作 docker ps:查看當前運行的容器 docker ps [OPTIONS] 常用OPTIONS說明: -a:顯示所有的容器 --filter,-f:根據條件過濾顯示的內容(eg:-f name=imc.user,過濾容器名字為"imc.user") -n:列出最近創建的n個容器 docker container inspect : 獲取容器的元數據。 docker rename [container id or name] [new Name]:重命名容器名 docker run [OPTIONS] [image id or name]:創建一個新的容器並運行 常用OPTIONS說明: -d: 後臺運行容器,並返回容器ID; -p(小寫): 指定埠映射,格式為:主機(宿主)埠:容器埠 -name: 為容器指定一個名稱; -m :設置容器使用記憶體最大值; --volume , -v: 綁定一個捲 --restart=always:總是重啟容器。(Docker容器的重啟策略及docker run的--restart選項詳解 docker update [options] [container id or name]:更新容器配置 常用options說明 -m:記憶體限制 --restart=no|always|on-failure:重啟策略 docker stop [container id or name]:停止運行指定容器 docker stop $(docker ps -q -f status=running):停掉所有正在運行的容器 docker start [container id or name]:開啟指定容器 docker restart [container id or name]:重啟指定容器 docker rm [-f] [container id or name]:刪除指定容器,加-f參數強制刪除 docker rm $(docker ps -a -q):刪除所有停止的容器   #、查看容器內部信息 docker exec -it [container id or name] bash:在運行的容器中執行bash命令,比如執行ls命令列出目錄或者查看文件。(退出容器:Ctrl + D 或 exit) docker top [options] [container id or name]:查看容器中運行的進程信息,支持 ps 命令參數。(能否用exec命令代替?不能,因為容器運行時不一定有/bin/bash終端來交互執行top命令,而且容器還不一定有top命令) docker pause [container id or name]:暫停容器中所有的進程 docker unpause [container id or name]:恢復容器中所有的進程 docker diff [container id or name]:檢查容器里文件結構的更改。(相對原始鏡像的文件結構)   #、查看容器運行日誌 docker啟動後預設日誌位置:/var/lib/docker/containers/容器ID/容器ID-json.log docker logs [options] [container id or name]:查看指定容器Id的的運行日誌 OPTIONS說明: -f : 跟蹤日誌輸出 --since :顯示某個開始時間的所有日誌 -t : 顯示時間戳 --tail :僅列出最新N條容器日誌 示例: 查看容器mynginx從2016年7月1日後的最新10條日誌。 docker logs --since="2016-07-01" --tail=10 mynginx   #、容器與主機之間的數據拷貝 docker cp:用於容器與主機之間的數據拷貝。 docker cp [container id or name]:src_path dest_path docker cp src_path [container id or name]:dest_path   volume(數據捲) Docker Image可以理解成多個只讀文件疊加而成,因此Docker Image是只讀的。當我們將其運行起來,就相當於在只讀的Image外包裹了一層讀寫層變成了容器。當你刪除容器之後,使用這個鏡像重新創建一個容器,此時的鏡像的只讀層還和原來的一樣,但是你在讀寫層的修改全部都會丟失。 docker使用volume實現數據的持久化,實現容器和容器之間,容器和host之間共用數據。volume的大小不會被加到容器本身上。   命令 docker volume create --name [volume name]:創建命名的volume,創建目錄預設:/var/lib/docker/volumes/[volume name]/_data/ docker volume ls:查看當前所有volume docker volume inspect [volume name]:查看volume詳細信息 docker volume rm [volume name]:刪除volume(沒有被容器使用的volume才能被刪除)   docker run .... -v 宿主目錄\文件:容器目錄\文件 :建立目錄或文件的映射 docker run .... -v [volume name]:容器目錄 docker run .... -v 容器目錄 :[自管理捲模式]docker自動創建匿名的volume。預設目錄/var/lib/docker/volumes/[container id]/_data。(自管理捲的volume刪除方式:刪除容器時,加 -v) -v 參數的註意事項: #、host機器的目錄路徑必須為全路徑(準確的說需要以/或~/開始的路徑) #、如果host機器上的目錄不存在,docker會自動創建該目錄 #、如果container中的目錄不存在,docker會自動創建該目錄 #、如果container中的目錄已經有內容,那麼docker會使用host上的目錄將其覆蓋掉 #、linux下 $PWD 是一個系統環境變數,指代當前目錄環境 #、windows下的路徑如:D:\PycharmProjects 要寫為 /d/PycharmProjects (試試原始目錄行不信)     示例:docker運行一個 .Net Core 程式 目錄規劃: ------container // 容器根目錄 --------mk.admin // 容器名 ----------Logs // 用於映射日誌的目錄 ----------Config // 用於映射配置的目錄   .NET Core埠設置 host.json文件

{
   "urls": "http://*:44380"
}

image   第一步:發佈.net core應用程式。 在要發佈的項目目錄執行如下命令:(或使用vs工具執行發佈) dotnet publish -f netcoreapp3.1 -o **\publish\mk.admin   第二步:創建 Dockerfile 定製鏡像 找 dotnet core 需要的運行時:docker image:ASP.NET Core Runtime  將Dockerfile放在發佈目錄下(**\publish\mk.admin) 內容:
#第一個指令,FROM 指定基礎構建鏡像
#基於 `microsoft/aspnet:3.1` 來構建我們的鏡像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

#拷貝項目publish文件夾中的所有文件到 docker容器中的publish文件夾中  
COPY . /publish

#設置工作目錄為 `/publish` 文件夾,即容器啟動預設的文件夾
WORKDIR /publish

EXPOSE 44380

#使用`dotnet ***.dll`來運行應用程式
ENTRYPOINT ["dotnet", "Mk.Admin.HttpApi.Host.dll"]
  第三步:創建鏡像 在發佈目錄 **\publish\mk.admin 目錄下,執行命令:
#、構建鏡像
docker build -t img.mk.admin .
#、運行容器
docker run --name mk.admin -p 44380:44380 -v /usr/application/Mk.Admin/Logs:/publish/Logs -d --restart=always img.mk.admin
(數據捲:將宿主機的/usr/application/Mk.Admin/Logs目錄映射到容器的/publish/Logs目錄,這樣就可以在宿主機上查看和刪除日誌文件)
#、查看運行中的容器
docker ps
#、輸入地址,查看站點運行狀態     推薦閱讀: Docker 資源彙總 Docker 容器連接 docker volume Docker Dockerfile Docker Compose    
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 背景 公司賣了一個產品給甲方,甲方要求部署後,要以 來訪問。甲方提供了證書信息和私鑰,記錄一下部署過程。 實現 1、思路 在我們產品伺服器上部署一個 、證書信息也放在這個伺服器上。外界的 經過 變成 協議,大致思路如下: 2、安裝過程 (1)上傳證書、私鑰到伺服器 證書 放於 ; 私鑰 放於 ; ( ...
  • 並查集最常用來判斷圖是否為連通圖,或用來求圖的連通分量數。 並查集1--<=>求連通分量個數 題目描述 某省調查城鎮交通狀況,得到現有城鎮道路統計表,表中列出了每條道路直接連通的城鎮。省政府“暢通工程”的目標是使全省任何兩個城鎮間都可以實現交通(但不一定有直接的道路相連,只要互相間接通過道路可達即可 ...
  • Redis的全稱是:Remote Dictionary.Server,本質上是一個Key-Value類型的記憶體資料庫,很像 memcached,整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫數據flush到硬碟 上進行保存。 因為是純記憶體操作,Redis的性能非常出色,每秒可以處理超... ...
  • 美團java一面問題 自我介紹 項目相關 線程與進程的區別 進程線程間的通信方式 hashmap與concurrenthashmap的區別 資料庫的事務 資料庫索引有哪些 大文件統計每個字元串的詞頻 有什麼想問的 一面面完之後面試官讓我回去等通知,一度以為掛了,沒想到出門沒有一個小時收到了美團2面的 ...
  • 前言 雖說已經工作,並且也做了兩個項目,但總覺得自己的基礎知識不牢固,所以從頭開始學起。學習過程中的一些代碼已上傳到 "Github" 和 "碼雲" 基礎知識 認識 PHP 略。。。 安裝與配置 略。。。 語言基礎 標記風格 XML 風格 腳本風格 簡短風格 ASP 風格 如果使用簡短風格和 ASP ...
  • 通俗理解spring源碼(二)—— 資源定位與載入 最開始學習spring的時候,一般都是這樣用: ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); User user = (User)con ...
  • 1. 前言 首先自我介紹一下,我是一個做 Java 的開發人員,從今年下半年開始,一直在各大技術博客網站發表自己的一些技術文章,差不多有幾個月了,之前在 cnblog 博客園加了網站統計代碼,看到每天的訪問量逐漸多了起來,國慶正好事情不多,就想著寫一個爬蟲,看下具體閱讀量增加了多少,這也就成了本文的 ...
  • 這篇文章是關於我的GBA庫lib_hl中數學庫的定點數部分。 定點數是什麼?為什麼要用定點數? 在之前的文章中,我已經介紹了GBA的硬體,它的CPU竟然居然理所當然沒有浮點數運算單元! 我要寫的是光線追蹤程式,基本上都在做精確的數學運算,而這個CPU卻連浮點數都不支持,那不是沒得玩? 當然是有方法的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...