Ubuntu 16.04 安裝Docker,部署NetCore項目

來源:互聯網
上載者:User

標籤:

國慶節前最後一篇。 準備工作:檢查版本,因為Docker官方明確說了一下,必須是64位的Ubuntu,並且kernel版本大於3.10;如果你不能滿足這個版本,恐怕是不能如願了。[email protected]:~$ uname -r4.4.0-34-generic 如果你版本過低,可以採用下面的命令升級:sudo apt-get updatesudo apt-get upgrade或者使用root許可權處理都可以。 安裝Docker其實應該只要一句指令即可[email protected]:~$ wget –qO - https://get.docker.com/ | sh請注意,這裡的-q後面跟的是大寫的O字母執行上面這個命令後,將可能是一段時間的等待(可能是網速問題吧),正常安裝的話,會出現類似這樣的介面:Need to get 23.3 MB of archives.After this operation, 128 MB of additional disk space will be used.Get:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 aufs-tools amd64 1:3.2+20130722-1.1ubuntu1 [92.9 kB]Get:2 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 cgroupfs-mount all 1.2 [4,970 B]Get:3 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 liberror-perl all 0.17-1.2 [19.6 kB]Get:4 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 git-man all 1:2.7.4-0ubuntu1 [735 kB]Get:5 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 git amd64 1:2.7.4-0ubuntu1 [3,006 kB]Get:6 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 docker-engine amd64 1.12.1-0~xenial [19.5 MB]Fetched 23.3 MB in 9min 19s (41.6 kB/s)Selecting previously unselected package aufs-tools.(Reading database ... 240386 files and directories currently installed.)Preparing to unpack .../aufs-tools_1%3a3.2+20130722-1.1ubuntu1_amd64.deb ...Unpacking aufs-tools (1:3.2+20130722-1.1ubuntu1) ...Selecting previously unselected package cgroupfs-mount.Preparing to unpack .../cgroupfs-mount_1.2_all.deb ...Unpacking cgroupfs-mount (1.2) ...Selecting previously unselected package docker-engine.Preparing to unpack .../docker-engine_1.12.1-0~xenial_amd64.deb ...Unpacking docker-engine (1.12.1-0~xenial) ...Selecting previously unselected package liberror-perl.Preparing to unpack .../liberror-perl_0.17-1.2_all.deb ...Unpacking liberror-perl (0.17-1.2) ...Selecting previously unselected package git-man.Preparing to unpack .../git-man_1%3a2.7.4-0ubuntu1_all.deb ...Unpacking git-man (1:2.7.4-0ubuntu1) ...Selecting previously unselected package git.Preparing to unpack .../git_1%3a2.7.4-0ubuntu1_amd64.deb ...Unpacking git (1:2.7.4-0ubuntu1) ...Processing triggers for libc-bin (2.23-0ubuntu3) ...Processing triggers for man-db (2.7.5-1) ...Processing triggers for ureadahead (0.100.0-19) ...Processing triggers for systemd (229-4ubuntu7) ...Setting up aufs-tools (1:3.2+20130722-1.1ubuntu1) ...Setting up cgroupfs-mount (1.2) ...Setting up docker-engine (1.12.1-0~xenial) ...Setting up liberror-perl (0.17-1.2) ...Setting up git-man (1:2.7.4-0ubuntu1) ...Setting up git (1:2.7.4-0ubuntu1) ...Processing triggers for libc-bin (2.23-0ubuntu3) ...Processing triggers for systemd (229-4ubuntu7) ...Processing triggers for ureadahead (0.100.0-19) ...+ sudo -E sh -c docker versionClient:Version: 1.12.1API version: 1.24Go version: go1.6.3Git commit: 23cf638Built: Thu Aug 18 05:33:38 2016OS/Arch: linux/amd64 Server:Version: 1.12.1API version: 1.24Go version: go1.6.3Git commit: 23cf638Built: Thu Aug 18 05:33:38 2016OS/Arch: linux/amd64 If you would like to use Docker as a non-root user, you should now consideradding your user to the "docker" group with something like: sudo usermod -aG docker hager #把非root角色的賬戶加入到docker group,這樣就可以在非root下用該賬戶運行docker相關命令了 Remember that you will have to log out and back in for this to take effect! [email protected]:~$ 驗證Docker是否正常安裝[email protected]:~$ docker versionClient:Version: 1.12.1API version: 1.24Go version: go1.6.3Git commit: 23cf638Built: Thu Aug 18 05:33:38 2016OS/Arch: linux/amd64Cannot connect to the Docker daemon. Is the docker daemon running on this host?[email protected]:~$#如果沒有docker group,可以添加一個,如果已經存在,則跳過這一步,直接添加使用者到該組[email protected]:~$ sudo groupadd dockergroupadd: group ‘docker‘ already exists#把目前使用者加入docker group組內,然後退出系統,再重新進入,以讓設定生效[email protected]:~$ sudo usermod -aG docker $USER# 此時,重新查詢docker版本,[email protected]:~$ docker versionClient:Version: 1.12.1API version: 1.24Go version: go1.6.3Git commit: 23cf638Built: Thu Aug 18 05:33:38 2016OS/Arch: linux/amd64Cannot connect to the Docker daemon. Is the docker daemon running on this host? # 不知這句是啥意思,可能是沒生效?,那就重啟一下試試看 [email protected]:~$ sudo reboot# 等待重啟後,再試試,果然可以了[email protected]:~$ docker versionClient:Version: 1.12.1API version: 1.24Go version: go1.6.3Git commit: 23cf638Built: Thu Aug 18 05:33:38 2016OS/Arch: linux/amd64 Server:Version: 1.12.1API version: 1.24Go version: go1.6.3Git commit: 23cf638Built: Thu Aug 18 05:33:38 2016OS/Arch: linux/amd64[email protected]:~$ #萬事皆helloworld[email protected]:~$ docker run hello-world Hello from Docker!This message shows that your installation appears to be working correctly. 至此,說明docker環境可以正常運行了。  接下來,我們準備一個Netcore 項目,然後發布到Docker中 準備工作:建立一個WebNetCore程式,比如VSCode玩的不熟悉,就用VS2015 建立吧。 需要注意的是,需要增加一個Dockerfile檔案放到publishoutput發布的根目錄下:FROM microsoft/dotnet:latest COPY . /app WORKDIR /app EXPOSE 5000/tcp ENTRYPOINT ["dotnet", "PublishDockerCoreDemo.dll"] 運行發布,然後,將發布後的publishoutput檔案夾複製到Ubuntu上。 運行docker構建鏡像的命令:(構建一個名為[email protected]:/opt/DotNetCoreProject/dockerdemoproject/PublishDockerCoreDemo$ docker build -t hager:PublishDockerCoreDemoimage .Sending build context to Docker daemon 9.629 MBStep 1 : FROM microsoft/dotnet:latestlatest: Pulling from microsoft/dotnet6a5a5368e0c2: Pull complete7b9457ec39de: Pull completeff18e19c2db4: Pull complete9899b4d47ca6: Pull complete2518101eff98: Pull completeafcc52fc1b06: Pull completeDigest: sha256:0bce09eb94bdba4e841f1937b19db7beb38d555bf5ad278c6d9a63dbf8993cf4Status: Downloaded newer image for microsoft/dotnet:latest---> 2de5a4ff8cc2Step 2 : COPY . /app---> 695efcf4c111Removing intermediate container 114f4b720ae5Step 3 : WORKDIR /app---> Running in ba347eb5e3a3---> 7456daa36483Removing intermediate container ba347eb5e3a3Step 4 : EXPOSE 5000/tcp---> Running in 62620b8f67af---> d871972f083aRemoving intermediate container 62620b8f67afStep 5 : ENTRYPOINT dotnet PublishDockerCoreDemo.dll---> Running in cfa7993fc67d---> d7236b593adeRemoving intermediate container cfa7993fc67dSuccessfully built d7236b593ade[email protected]:/opt/DotNetCoreProject/dockerdemoproject/PublishDockerCoreDemo$  #上面這幾個玩意兒,下載比較慢,如果你網速給力,或許很快就完事兒了。 下一步,就是運行容器了,鋪墊了那麼久就是為了讓她能跑一跑;docker run -it -p 8080:5000 hager:PublishDockerCoreDemoimage  容器跟鏡像的關係,一個鏡像可以建立多個容器。如上面的,我可以再建立一個 docker run -d -p 8090:5000 hager:PublishDockerCoreDemoimage -d 參數也就是後台運行,然後通過docker ps 可以看到容器啟動並執行狀態,通過docker stop 容器id 停止。 箱子裡面的東西弄好了,那麼怎麼搬運到其他地方呢。想搬運你得打包吧,總不能赤果果的搬運吧。萬一發現了不該看到的東西,怎麼辦呢。 儲存和載入鏡像(save、load)文法:docker save image_name -o file_path # 儲存鏡像到一個tar包; -o, --output="" Write to an file$docker save image_name -o file_path# 載入一個tar包格式的鏡像; -i, --input="" Read from a tar archive file$docker load -i file_path # 機器a$docker save image_name > /home/save.tar# 使用scp將save.tar拷到機器b上,然後:$docker load < /home/save.tar 文法知道了,那就照抄執行唄,運氣好的話,一遍就過了。把它儲存在了 /opt/檔案夾下了。話說這個包還挺大。   目前,因為我的虛擬機器裡安裝了很多別的,所以,現在米有正常的看到瀏覽的程式。應該是5000連接埠做了處理,有可能是nginx給攔截了。等回頭換連接埠試試。 換成連接埠9527 ,然後再次發包!節後再試吧,目前nginx幹擾。  疑問:1、是不是每次更新網站,都要重新用docker build一下鏡像呢?這樣的話,是不是得每次都要同步到別的伺服器上呢。如果是,感覺好麻煩;2、目前還沒有弄好如何向docker容器中的網站,自動運行;是不是得安裝supervisor守護。  參考:http://www.cnblogs.com/linezero/p/docker.htmlhttp://blog.chinaunix.net/uid-10915175-id-4443127.htmlhttp://blog.chinaunix.net/uid-10915175-id-4442826.html

Ubuntu 16.04 安裝Docker,部署NetCore項目

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.