本篇文章,整理docker中常用的命令,方便大家學習和命令查詢,最后分享一個.NET Core docker部署的示例,
Docker安裝 CentOS Docker 安裝 安裝 Docker Desktop for Mac、Docker Desktop for Windows 設定docker倉庫鏡像加速器 win10上修改docker的鏡像檔案存盤位置 .dockerignore 檔案的作用 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 Repository 鏡像倉庫操作 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中latest標簽引發的困惑 關于docker latest tag (docker image有一個tag叫做latest,latest通過最近一次沒有指定版本的build或tag來生成) 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 build 后面的 . ,實際上是鏡像構建背景關系, 參考:docker 鏡像構建背景關系理解 想查看docker構建時背景關系的臨時檔案,在windows中可以查看目錄:C:\ProgramData\Docker\tmp 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的鏡像 示例:
注意: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:總是重啟容器(eg:重啟計算機后自動啟動應用),(Docker容器的重啟策略及docker run的--restart選項詳解)
docker run的--rm選項詳解
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 desktop 掛在檔案時:exception Filesharing has been cancelled
示例:docker運行一個 .Net Core 程式
目錄規劃:
------container // 容器根目錄
--------mk.admin // 容器名
----------Logs // 用于映射日志的目錄
----------Config // 用于映射配置的目錄
.NET Core埠設定
方式一:
代碼中系結埠,比如新建host.json檔案,如下:
{
"urls": "http://*:44380"
}
方式二、
在Dockerfile檔案中,使用Env設定環境變數

#第一個指令,FROM 指定基礎構建鏡像 #基于 `microsoft/aspnet:3.1` 來構建我們的鏡像 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 #拷貝專案publish檔案夾中的所有檔案到 docker容器中的publish檔案夾中 COPY . /publish #設定作業目錄為 `/publish` 檔案夾,即容器啟動默認的檔案夾 WORKDIR /publish #使用`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
Docker Compose
Docker 與 Docker Compose版本對應關系
docker-compose yml檔案詳解
docker-compose 中的volumes
docker-compose 多個-f 引數以及config命令
Docker Compose與容器網路(案例)
兩種方法在docker-compose.yml中使用引數
第一種:在.env檔案中定義它
第二種:運行docker-compose命令時,以命令列引數發送.例如 docker-compose up -d --build-arg key=val...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/44912.html
標籤:.NET Core
