作爲一個 dotnetcore 程序員,我常用的 docker 操作

        相對於Windows部署,Docker 部署簡單、快速。我負責的項目,最頻繁時一天要部署十幾次。而且,用戶基本感受不到站點更新的,因爲不到 1 秒就更新完畢了。
        那我來分享一下平時常用的 Docker 操作,希望對於剛入坑的童鞋有所幫助,老手請忽略本文。
一,安裝 Docker。
        現在我拿到了一臺 CentOS 7的機器,第一步就是安裝 Docker。
        使用 root 帳號,執行如下命令:
yum install docker-ce
        什麼?提示沒找到包?那先添加 yum 源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
        再執行
yum install docker-ce
        不出意外的話,docker 就安裝成功了,如果不成功,檢查下 CentOS 版本,6的話或者更低的話,儘量升到7吧。
        安裝成功後要啓動:
systemctl start docker
        還要設置重啓後自動啓動:
systemctl enable docker
        好,安裝基本完成了。
二,跑一個 dotnetcore 項目。
        假設我現在有一個 dotnetcore 項目叫 MyDemo.WebApi ,是Aspnetcore 2.2 的標準 WebApi 模板項目,沒寫一句代碼,已經發布好了,發佈後的文件如下:

 

        在此文件夾下建一個文本文件,輸入以下內容:

FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
COPY . ./
ENTRYPOINT ["dotnet", "MyDemo.WebApi.dll"]

        保存,把這個文件重命名爲 Dockerfile 注意,沒有擴展名,把 txt 擴展名去掉。如果不會去掉,請學好基本電腦操作再來做研發。這個文件的內容是告訴 Docker ,我的項目是基於微軟aspnetcore2.2的運行時的,入口的命令是

dotnet MyDemo.WebApi.dll
現在的文件夾是這樣:

選中這8個文件,用Winrar 打個包,注意要 zip 包哦,

        把打好的包,傳到裝好 Docker 的 linux 機器上。方法有 ftp、rz 等,實在不行,可以本地 windows 跑個站點,把 zip 包放在裏面,到 linux 上 wget 下載一下。
例如我放在了linux 上的 /data/MyDemo/v1 這裏。
然後 cd /data/MyDemo/v1 到這個目錄裏,unzip publish.zip 解壓一下。rm publish.zip 把壓縮包刪掉。
        重點來了,執行如下命令:
docker build -t mydemo:1 .
        注意最後那個點,是當前目錄的意思,別丟了。這句話的意思是,嘿 Docker,把當前文件夾給我做個鏡像,名字是 mydemo,版本是1 。然後可以用 docker images 查看一下本機的所有鏡像。
        鏡像有了,還需要容器跑起來。執行如下命令:
docker run -d -p 8080:80 mydemo:1
        然後這個容器就跑起來了,在其他機器上打開瀏覽器,打開 http://linux機器IP:8080/api/values 就能得到輸出了。
在 linux 上輸入 docker ps 也能看到這個容器在跑了。
docker run 命令還有其他的一些選項,如:
 --restart=always 這個參數能讓容器遇到錯誤時總是重啓
 -v /etc/localtime:/etc/localtime:ro  這個選項能讓 docker 使用宿主的時區。 -v 這個命令還能映射宿主的目錄或者文件給容器用。
docker ps 常用的參數是 -a 能顯示所有狀態的容器,不加 -a 只會顯示正在跑的容器。
        那我們學到了 docker build 構建鏡像、docker images 查看鏡像、docker run 啓動容器、docker ps 查看容器 四個命令,還有哪些命令是常用的呢:

三,其他常用 docker 命令
        docker restart  這個命令能讓容器重啓,比如跑了一個Nginx ,配置文件映射到宿主機上,修改了配置文件,就需要重啓容器讓配置生效。
        docker stop 這個命令能讓容器停止。比如發佈了一個新版本的 mydemo,就可以停止掉老版本的容器,啓動一個新版本的容器,兩個命令連起來,切換的就會很快。
        docker rm  這個命令能刪除容器。停止掉的容器,docker ps -a 還會看到他的身影,使用本命令才能刪掉。
        docker rmi 這個命令能刪除鏡像。老版本的鏡像沒用了,可以用這個命令刪掉。
        docker pull 這個命令能從 docker hub 網站上拉取一個鏡像到本地,讓你部署 mysql mongodb consul apollo skywalking 這些應用變得分分鐘跑起來。
        docker logs 查看容器的日誌。
        docker inspect 查看容器卷信息,容器跑起來忘了映射了哪些目錄?沒錯,就用這個命令可以查到。

這些就是我作爲一個 dotnetcore 程序員經常用到的 Docker 操作,東西不多,簡單易學。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章