開發和運維之間由於環境不一樣而致使的矛盾,集羣環境下每臺機器部署相同的應用DevOps(Development and Operations)linux
Docker是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的Linux機器上,也能夠實現虛擬化,容器是徹底使用沙箱機制,相互之間不會有任何接口。 Docker是世界領先的軟件容器平臺。開發人員利用 Docker 能夠消除協做編碼時「在個人機器上可正常工做」的問題。 運維人員利用 Docker 能夠在隔離容器中並行運行和管理應用,得到更好的計算密度。企業利用 Docker 能夠構建敏 捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽爲 Linux 和 Windows Server 應用發佈新功能。docker
簡化程序: Docker 讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,即可以實現虛擬化。Docker改變了虛擬化的方式,使開發者能夠直接將本身的成果放入Docker中進行管 理。方便快捷已是 Docker的最大優點,過去須要用數天乃至數週的 任務,在Docker容器的處理下,只須要數秒就 能完成。數據庫
避免選擇恐懼症: 若是你有選擇恐懼症,仍是資深患者。Docker 幫你 打包你的糾結!好比 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,因此 Docker 能夠簡化部署多種應用實例工做。好比 Web 應用、後臺應用、數據庫 應用、大數據應用好比 Hadoop 集羣、消息隊列等等均可以打包成一個鏡像部署。 節省開支: 一方面,雲計算時代到來,使開發者沒必要爲了追求效果而配置高額的硬件,Docker 改變了高性能必然高 價格的思惟定勢。Docker 與雲的結合,讓雲空間獲得更充分的利用。不只解決了硬件管理的問題,也改變了虛擬化 的方式。json
Docker使用C/S架構,Client經過接口與Server進程通訊實現容器的構建,運行和發佈,如圖: vim
安裝了Docker程序,並運行了Docker daemon的主機。centos
運行在宿主機上,Docker守護進程,用戶經過Docker client(Docker命令)與Docker daemon交互。安全
將軟件環境打包好的模板,用來建立容器的,一個鏡像能夠建立多個容器。 鏡像分層結構:bash
位於下層的鏡像稱爲父鏡像(Parent Image),最底層的稱爲基礎鏡像(Base Image)。 最上層爲「可讀寫」層,其下的均爲「只讀」層。網絡
AUFS:架構
Docker的運行組件,啓動一個鏡像就是一個容器,容器與容器之間相互隔離,而且互不影響。
Docker命令行工具,用戶是用Docker Client與Docker daemon進行通訊並返回結果給用戶。也可使用其餘工具通 過Docker Api 與Docker daemon通訊。
常常會和倉庫(Repository)混爲一談,實際上Registry上能夠有多個倉庫,每一個倉庫能夠當作是一個用戶,一個用戶 的倉庫放了多個鏡像。倉庫分爲了公開倉庫(Public Repository)和私有倉庫(Private Repository),最大的公開倉庫是 官方的Docker Hub,國內也有如阿里雲、時速雲等,能夠給國內用戶提供穩定快速的服務。用戶也能夠在本地網絡 內建立一個私有倉庫。當用戶建立了本身的鏡像以後就可使用 push 命令將它上傳到公有或者私有倉庫,這樣下次 在另一臺機器上使用這個鏡像時候,只須要從倉庫上 pull 下來就能夠了。
Docker 提供了兩個版本:社區版 (CE) 和企業版 (EE)。
以Centos7爲例,且Docker 要求操做系統必須爲64位,且centos內核版本爲3.1及以上。
查看系統內核版本信息:
uname -r
卸載舊版本:
yum remove docker docker-common docker-selinux docker-engine yum remove docker-ce
卸載後將保留 /var/lib/docker 的內容(鏡像、容器、存儲卷和網絡等)。
rm -rf /var/lib/docker
1.安裝依賴軟件包
yum install -y yum-utils device-mapper-persistent-data lvm2 #安裝前可查看device-mapper-persistent-data和lvm2是否已經安裝 rpm -qa|grep device-mapper-persistent-data rpm -qa|grep lvm2
2.設置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.rep
清華大學開源鏡像站: https://mirrors.tuna.tsinghua.edu.cn/docker-ce/
修改鏡像地址
vim /etc/yum.repos.d/docker-ce.repo
替換開源鏡像站
%s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@
3.更新yum軟件包索引
yum makecache fast
安裝最新版本docker-ce
yum install docker-ce -y #安裝指定版本docker-ce可以使用如下命令查看 yum list docker-ce.x86_64 --showduplicates | sort -r # 安裝完成以後可使用命令查看 docker version
這裏使用阿里雲的免費鏡像加速服務,也可使用其餘如時速雲、網易雲等
1.註冊登陸開通阿里雲容器鏡像服務
2.查看控制檯,招到鏡像加速並複製本身的加速地址
3.找到/etc/docker目錄下的daemon.json文件,沒有則直接vi daemon.json
4.加入如下配置
#填寫本身的加速地址 { "registry-mirrors": [""] }
5.通知systemd重載此配置文件;
systemctl daemon-reload
6.重啓docker服務
systemctl restart docker
開機啓動 systemctl enbale docker
啓動docker systemctl start docker
輸入docker能夠查看Docker的命令用法,輸入docker COMMAND --help查看指定命令詳細用法。
docker 規定了命令規則,必定要按照新版的命令,由於老版命令將會刪除。具體查看docker COMMAND --help
一、查找鏡像:
# 搜索docker hub網站鏡像的詳細信息 docker search 關鍵詞
二、下載鏡像:
# Tag表示版本,有些鏡像的版本顯示latest,爲最新版本 docker pull 鏡像名:TAG
三、查看鏡像:
# 查看本地全部鏡像 docker images (old) docker image list (new)
四、刪除鏡像:
docker rmi -f 鏡像ID或者鏡像名:TAG # 刪除指定本地鏡像 # -f 表示強制刪除
五、獲取元信息:
# 獲取鏡像的元信息,詳細信息 docker inspect 鏡像ID或者鏡像名:TAG
一、運行:
docker run --name 容器名 -i -t -p 主機端口:容器端口 -d -v 主機目錄:容器目錄:ro 鏡像ID或鏡像名:TAG # --name 指定容器名,可自定義,不指定自動命名 # -i 以交互模式運行容器 # -t 分配一個僞終端,即命令行,一般-it組合來使用 # -p 指定映射端口,講主機端口映射到容器內的端口 # -d 後臺運行容器 # -v 指定掛載主機目錄到容器目錄,默認爲rw讀寫模式,ro表示只讀
二、容器列表:
docker ps -a -q # docker ps查看正在運行的容器 # -a 查看全部容器(運行中、未運行) # -q 只查看容器的ID
三、啓動容器:
docker start 容器ID或容器名
四、中止容器:
docker stop 容器ID或容器名
五、刪除容器:
docker rm -f 容器ID或容器名 # -f 表示強制刪除
六、查看日誌:
docker logs 容器ID或容器名
七、進入正在運行容器:
docker exec -it 容器ID或者容器名 /bin/bash # 進入正在運行的容器而且開啓交互模式終端 # /bin/bash是固有寫法,做用是由於docker後臺必須運行一個進程,不然容器就會退出,在這裏表示啓動容器後啓動 bash。 # 也能夠用docker exec在運行中的容器執行命令
八、拷貝文件:
docker cp 主機文件路徑 容器ID或容器名:容器路徑 #主機中文件拷貝到容器中 docker cp 容器ID或容器名:容器路徑 主機文件路徑 #容器中文件拷貝到主機中
九、獲取容器元信息:
docker inspect 容器ID或容器名