一、簡介
Docker是一個開源的應用容器引擎;是一個輕量級容器技術; Docker支持將軟件編譯成一個鏡像;然后在鏡像中各種軟件做好配置,將鏡像發布出去,其他使用者可以直接使 用這個鏡像; 運行中的這個鏡像稱為容器,容器啟動是非常快速的。
Docker從1.13版本之后采用時間線的方式作為版本號,分為社區版CE和企業版EE。社區版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、插件等。社區版按照stable和edge兩種方式發布,每個季度更新stable版本,如17.06,17.09;每個月份更新edge版本,如17.09,17.10。
二、核心概念
docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操作系統之上); docker客戶端(Client):連接docker主機進行操作; docker倉庫(Registry):用來保存各種打包好的軟件鏡像; docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中; docker容器(Container):鏡像啟動后的實例稱為一個容器;容器是獨立運行的一個或一組應用
使用Docker的步驟:
1)、安裝Docker
2)、去Docker倉庫找到這個軟件對應的鏡像;
3)、使用Docker運行這個鏡像,這個鏡像就會生成一個Docker容器;
4)、對容器的啟動停止就是對軟件的啟動停止;
三、安裝docker
1、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本
$ uname -r
2、使用 root
權限登錄 Centos。確保 yum 包更新到最新。
$ sudo yum update
3、卸載舊版本(如果安裝過舊版本的話)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、設置yum源
//阿里源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //穩定源 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
$ yum list docker-ce --showduplicates | sort -r
7、安裝docker
$ sudo yum install docker-ce #由於repo中默認只開啟stable倉庫,故這里安裝的是最新穩定版17.12.0 $ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
8、啟動Docker並加入開機啟動
$ sudo systemctl start docker $ sudo systemctl enable docker
9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
$ docker version
問題
1、因為之前已經安裝過舊版本的docker,在安裝的時候報錯如下:
Transaction check error: file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
2、卸載舊版本的包
$ sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
3、再次安裝docker
$ sudo yum install docker-ce
四、Docker倉庫
Docker常用命令&操作
1)、鏡像操作
操作 | 命令 | 說明 |
---|---|---|
檢索 | docker search 關鍵字 eg: docker search redis | 我們經常去docker hub上檢索鏡像的詳細信息,如鏡像的TAG。 |
拉取 | docker pull 鏡像名:tag | :tag是可選的,tag表示標簽,多為軟件的版本,默認是latest |
列表 | docker images | 查看所有本地鏡像 |
刪除 | docker rmi image-id | 刪除指定的本地鏡像 |
搜索對於的鏡像名,可以查看鏡像的TAG
1、拉取鏡像,此處舉例httpd,鏡像的ID唯一標識了鏡像,如果ID相同,說明是同一鏡像。TAG信息來區分不同發行版本,如果不指定具體標記,默認使用latest標記信息
2、查看鏡像,可以發現httpd已經拉取成功
docker images
3、創建一個容器並運行,將容器命名為dockerhttpd ,並把80端口映射到宿主機的8080端口,宿主機的目錄/dockerdata/httpd掛載到容器的/var/www/httpd/
docker run -it -d -p 8080:80 --name dockerhttpd -v /dockerdata/httpd:/var/www/httpd/ httpd
參數說明如下:
-i:以交互模式運行容器,通常與-t同時使用。
-t:為容器重新分配一個偽輸入終端,通常與-i同時使用。
-d:后台運行容器,並返回容器ID。
-p:端口映射,格式為“宿主機端口:容器端口”。
--name:為容器指定一個名稱。
-v:把宿主機上的一個目錄掛載到鏡像里,格式為“宿主機目錄:鏡像內掛載的路徑”,必須為絕對路徑。
五、安裝MySQL示例
docker pull mysql
錯誤的啟動
正確的啟動
幾個其他的高級操作