摘要:鏡像加速國內有非常多的鏡像倉庫,本文介紹使用阿里云的,后文我們也會介紹把自己的鏡像上傳到阿里云,并且該服務是免費的。訪問這個地址如果沒有阿里云賬號的就自己注冊一個。最好還是用國內的速度比較快,這里介紹阿里云的。
Docker 的前世今生
Docker 的核心理念是 Build, Ship, and Run Any App, Anywher,即一次封裝,到處運行。
從前,我們在服務器配置一個應用的運行環境,要安裝各種組件,就拿 JavaWeb 的環境來說吧,要安裝 Tomcat、MySQL 等。安裝和配置這些東西有多麻煩就不說了,它還不能跨平臺。假如我們是在 Windows 上安裝的這些環境,到了 Linux 又得重新裝。況且就算不跨操作系統,換另一臺同樣操作系統的服務器,要移植應用也是非常麻煩的。
Linux 容器技術 的出現就解決了這樣一個問題,而 Docker 就是在它的基礎上發展過來的。將應用運行在 Docker 容器上面,而 Docker 容器在任何操作系統上都是一致的,這就實現了跨平臺、跨服務器。只需要一次配置好環境,換到別的機子上就可以一鍵部署好,大大簡化了操作。
Docker 的安裝配置這里我主要介紹一下 Docker 在 Ubuntu 和 Windows 中的安裝。其他的操作系統可自行搜索安裝教程。
由于 Docker 官網在國內的訪問速度不好,所以這里推薦去 DaoCloud 下載鏡像,速度非??欤?/p>
https://get.daocloud.io/#inst...
Windows先進入到 Docker 的下載頁面:
https://get.daocloud.io/#inst...
如果是 win10 系統就直接下載 Docker for Windows,如果是 win10 之前的系統就下載Docker Toolbox。下載完成之后默認一直點下一步就安裝完成了。
注意:windows 運行 Docker 需要在 BIOS 中開啟 Intel Virtual Technology,如果打不開 Docker 并提示有該類錯誤請自行根據自己電腦型號搜索相關教程。Ubuntu
可以用 Ubuntu 自帶的安裝源安裝 Docker,只需要執行以下兩條命令即可:
$ sudo apt-get update $ sudo apt-get install docker.io
不過用自帶安裝源安裝的 Docker 并不是最新版,推薦用以下方式安裝最新版:
$ curl -sSL https://get.daocloud.io/docker | sh
安裝完成之后可以用 docker version 命令查看 docker 版本信息。
注意:正常情況下,應該顯示出 Client 和 Server 的信息,如果沒有 Server 的信息,則代表服務沒有啟動。此時需要用 service docker start 命令啟動它。Ubuntu 卸載 Docker
如果裝錯版本了可以卸載了重新裝
$ sudo apt-get remove --purge docker.io $ rm -rf /var/lib/dockerDocker 核心概念
Docker 有三大核心概念:
倉庫(repository)
鏡像(image)
容器(container)
Docker 利用倉庫管理鏡像的設計與 Git 非常相似。我們要配置的應用運行環境就是鏡像,如 nginx 鏡像,當我們本地沒有該鏡像的時候,就需要從遠程倉庫 pull 下來,當我們啟動這個鏡像時,就會有一份鏡像被復制并運行在容器中。如果我們改動了容器里面的內容,也可以將其 commit 保存成新的鏡像。
第一個 Docker 實例這里以 Nginx 為例來演示在 docker 中啟動一個應用的過程。
啟動 Nginx 分為 三步:
pull nginx 鏡像
運行 nginx 容器
映射 nginx 端口
pull 鏡像首先要 Docker 官方倉庫 里搜索 nginx,找到帶有 official 字樣的,點進去把 pull 命令復制下來。
https://hub.docker.com
執行該條命令就把鏡像 pull 到本地了。執行「docker images」即可查看本地鏡像。
其實 docker pull nginx 這條命令是簡寫形式,完整命令應該是:
$ docker pull registry.hub.docker.com/library/nginx
完整的命令是在 nginx 前面加上了 注冊服務器的地址,由于 docker pull 的默認地址是這個,所以該地址是可以不加的。
為什么要說這個呢,因為從官方倉庫下載鏡像實在是非常的慢,有時候還下載不了。如果我們更改了這個注冊服務器的地址,把它換成國內的,就可以實現加速。
鏡像加速國內有非常多的鏡像倉庫,本文介紹使用阿里云的,后文我們也會介紹把自己的鏡像上傳到阿里云,并且該服務是免費的。
訪問這個地址:
https://cr.console.aliyun.com...
如果沒有阿里云賬號的就自己注冊一個。在上面這個地址的頁面就可以看到自己的專屬加速地址了,并且有不同系統的安裝方法,根據給的教程安裝即可。
運行 nginx 容器pull 了鏡像之后,執行以下命令就可以啟動它了。
$ docker run -d nginx
這條命令是后臺啟動 nginx ,不加 -d 就是前臺啟動。啟動了之后我們暫時還是無法訪問帶它的,我們還需要將容器內的 nginx 端口映射到容器外面,才可以訪問到。
映射 nginx 端口$ docker run -d -p 8080:80 nginx
跟上條命令比起來只加了一個 -p 參數,后面跟上端口,這里我是把本機的 8080 端口映射到 容器內的 80 端口上,瀏覽器訪問 localhost:8080 就可以看到 nginx 的歡迎頁面了。
鏡像和容器的基本操作 鏡像操作查看本地鏡像
$ docker images
為鏡像添加標簽
$ docker tag old-tag new-tag
新的標簽跟原標簽鏡像的 ID 是完全一樣的,它們實際上都指向同一個鏡像文件,只是別名不同而已。
刪除鏡像
$ docker rmi image-id/image-tag
注意:刪除鏡像需要先刪除使用了此鏡像的容器,雖然可以強制刪除,但是并不推薦這么做。另外刪除鏡像,可以用 tag 或 ID 刪除,如果 ID 是一樣的就用 tag 刪除容器操作
查看正運行的容器
$ docker ps
停止正在運行的容器
$ docker stop container-id
容器的 ID 不需要全部輸完,只要能區分兩個容器就可以了。
查看所有容器
$ docker ps -a
刪除容器
$ docker rm container-id
刪除容器之前需要先停止它
將正在運行的容器保存為鏡像
$ docker commit container-id image-tag
特別注意:如果更改了容器后不將它保存為新的鏡像,在容器被刪除后,所有的更改都不會被保存。下一文會介紹另 Docker 的數據存儲可以解決這個問題。另外,此命令后面的 tag 可以不寫只寫名字,默認 latest。
進入容器內部
$ docker exec -it container bash
Docker 容器也有一個類 Linux 的文件系統,還可以用一些 linux 命令。要退出容器可輸入exit
注意:有的鏡像是沒有帶 bash 的,比如 docker pull daocloud.io/library/nginx:1.13.8-alpine-perl,這條命令就會報錯,這時就可以用 sh 建立連接:
$ docker exec -it container /bin/sh
復制文件到容器內
$ docker cp file container-id:newfile
復制容器內的文件到容器外
$ docker cp container-id:file newfile
復制容器內的文件到容器外命令是在容器外執行的導入導出鏡像和容器 導入和導出鏡像
導出鏡像
$ docker save -o name.tar image-tag
導入鏡像
$ docker load --input name.tar導入和導出容器
導出容器
$ docker export -o name.tar container-id
導入容器(docker import name.tar image-tag)
容器導入其實是導成了鏡像。push 自己的鏡像到遠程倉庫
先來了解一下 docker 是如何管理倉庫和鏡像的。
倉庫是放在注冊服務器上的,一個倉庫只管理一個鏡像,一個鏡像可以有多個版本。
push 鏡像到 Docker Hub訪問 Docker Hub(注冊服務器):
https://hub.docker.com/
如果沒有賬號的話自己注冊一個,然后點擊 Create Repository ,在如下頁面創建一個倉庫。
例如我起的名字是:web-server,我的倉庫名就是 stormxing/web-server
接著在本地用如下命令登錄 Docker Hub
如果我們想把鏡像上傳到 Docker Hub,我們的鏡像名字就得跟倉庫名一致。要做到這一點,我們可以用為鏡像創建一個新的標簽。例如將 nginx 鏡像重新創建一個標簽 stormxing-webserver,如果版本不填寫就默認是 latest。
最后,直接 push 就可以了,完成之后在倉庫頁面的 tags 選項中可以看到自己的鏡像。
push 鏡像到阿里云倉庫雖然 Docker Hub 可以 push 鏡像,但是速度太慢了。最好還是用國內的速度比較快,這里介紹阿里云的。
首先登陸這個地址,創建一個倉庫,然后設置下登錄密碼:
https://cr.console.aliyun.com
創建倉庫選擇本地倉庫
最后阿里云的操作指南非常詳細,跟上面的步驟基本一致,這里就不再贅述了。
總結本篇文章主要介紹了Docker 的作用、Docker 三大核心(倉庫、鏡像、容器)的基本操作,還介紹了如何 push 自己的鏡像到遠程倉庫。
下一篇文章 將介紹 Docker 的數據管理和用更高級的方式 Dockerfile 來創建鏡像以及 docker-compose 的簡單使用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27248.html
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術專家我看過哪些技術類書籍。 大家好,我是...
摘要:核心對名字空間的支持完全隔離了工作環境中應用程序的視野,包括進程樹網絡用戶與掛載文件系統,而核心的提供資源隔離,包括存儲器與網絡。因此更為輕量快速和易于管理。 docker 如日中天,這不是單純的炒概念,docker 確確實實解決了開發與運維的痛點,因此在企業開發中得到了非常廣泛的使用,本文對于 docker 的這些基本知識點再做一些簡單回顧。 什么是 docker 根據 wikip...
摘要:而是基于容器的這個設計思想,基于技術實現的核心管理引擎。的三大特色,和。不同內的進程屬于不同的,彼此透明,互不干擾。看下面的圖加深理解。同樣內核版本的不同的發行版,其都是一致的。 www.docker.com的網頁有這樣一張有意思的動畫: showImg(https://segmentfault.com/img/remote/1460000017474530); 從這張gif圖片,我們...
摘要:進階多線程開發關鍵技術后端掘金原創文章,轉載請務必將下面這段話置于文章開頭處保留超鏈接。關于中間件入門教程后端掘金前言中間件 Java 開發人員最常犯的 10 個錯誤 - 后端 - 掘金一 、把數組轉成ArrayList 為了將數組轉換為ArrayList,開發者經常... Java 9 中的 9 個新特性 - 后端 - 掘金Java 8 發布三年多之后,即將快到2017年7月下一個版...
閱讀 2063·2021-11-11 16:55
閱讀 1398·2021-09-28 09:36
閱讀 1045·2019-08-29 15:21
閱讀 1575·2019-08-29 14:10
閱讀 2762·2019-08-29 14:08
閱讀 1635·2019-08-29 12:31
閱讀 3250·2019-08-29 12:31
閱讀 981·2019-08-26 16:47