Docker從1.13版本之后采用時間線的方式作為版本號,分為社區(qū)版CE和企業(yè)版EE。
社區(qū)版是免費(fèi)提供給個人開發(fā)者和小型團(tuán)體使用的,企業(yè)版會提供額外的收費(fèi)服務(wù),比如經(jīng)過官方測試認(rèn)證過的基礎(chǔ)設(shè)施、容器、插件等。
社區(qū)版按照stable和edge兩種方式發(fā)布,每個季度更新stable版本,如17.06,17.09;每個月份更新edge版本,如17.09,17.10。
一、安裝docker
1、Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當(dāng)前的內(nèi)核版本
$ uname -r
2、使用 root 權(quán)限登錄 Centos。確保 yum 包更新到最新。
$ sudo yum update
3、卸載舊版本(如果安裝過舊版本的話)
$ sudo yum remove docker? docker-common docker-selinux docker-engine
4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅(qū)動依賴的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、設(shè)置yum源
$ 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中默認(rèn)只開啟stable倉庫,故這里安裝的是最新穩(wěn)定版17.12.0
$ sudo yum install <FQPN>? # 例如:sudo yum install docker-ce-17.12.0.ce
8、啟動并加入開機(jī)啟動
$ sudo systemctl start docker
$ sudo systemctl enable docker
9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
$ docker version
二、問題
1、之前已經(jīng)安裝過舊版本的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
yum install docker -y
systemctl start docker
systemctl enable docker
#Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
#查看docker基本信息
docker info
#docker鏡像下載
#docker search : 從Docker Hub查找鏡像
docker search centos
#下載鏡像
#Usage:? docker pull [OPTIONS] NAME[:TAG|@DIGEST]
docker pull docker.io/centos
#查看鏡像列表
docker images
#鏡像標(biāo)記
#docker tag : 標(biāo)記本地鏡像,將其歸入某一倉庫。
#docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
docker tag ff426288ea90 registry
#運(yùn)行一個container
#docker run :創(chuàng)建一個新的容器并運(yùn)行一個命令
#docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型,可選 STDIN/STDOUT/STDERR 三項;
-d: 后臺運(yùn)行容器,并返回容器ID;
-i: 以交互模式運(yùn)行容器,通常與 -t 同時使用;
-P: 隨機(jī)端口映射,容器內(nèi)部端口隨機(jī)映射到主機(jī)的高端口
-p: 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口
-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
--name="nginx-lb": 為容器指定一個名稱;
--dns 8.8.8.8: 指定容器使用的DNS服務(wù)器,默認(rèn)和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默認(rèn)和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 設(shè)置環(huán)境變量;
--env-file=[]: 從指定文件讀入環(huán)境變量;
--cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運(yùn)行;
-m :設(shè)置容器使用內(nèi)存最大值;
--net="bridge": 指定容器的網(wǎng)絡(luò)連接類型,支持 bridge/host/none/container: 四種類型;
--link=[]: 添加鏈接到另一個容器;
--expose=[]: 開放一個端口或一組端口;
--volume , -v: 綁定一個卷
docker run -dit registry:latest /bin/bash
docker ps -a
#進(jìn)入/退出/殺死一個容器
#docker attach :連接到正在運(yùn)行中的容器。
#docker attach [OPTIONS] CONTAINER
docker attach CONTAINER_ID
#這時發(fā)現(xiàn)通過exit退出容器。容器會關(guān)閉。
#通過Ctrl+P+Q的方式退出。容器不會關(guān)閉
#docker kill :殺掉一個運(yùn)行中的容器。
docker kill CONTAINER_ID
#獲取容器日志
#docker logs : 獲取容器的日志
#docker logs [OPTIONS] CONTAINER
-f : 跟蹤日志輸出
--since :顯示某個開始時間的所有日志
-t : 顯示時間戳
--tail :僅列出最新N條容器日志
docker logs -f CONTAINER_ID
#刪除容器
docker rm :刪除一個或多少容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f :通過SIGKILL信號強(qiáng)制刪除一個運(yùn)行中的容器
-l :移除容器間的網(wǎng)絡(luò)連接,而非容器本身
-v :-v 刪除與容器關(guān)聯(lián)的卷
docker rm -f CONTAINER_ID