帶你進(jìn)入Docker的世界
Docker優(yōu)勢(shì)
操作系統(tǒng): debain/unbuntu /FreeBSD/Centos/openSUSE
編程語(yǔ)言: java、C /C++ python、Ruby、Golang
Web服務(wù)器:resin、tomcat、 apache沿后、nginx刽锤、lighttpd镊尺、jetty
數(shù)據(jù)庫(kù):mysql、redis并思、mongoDB庐氮、sqlserver、H2宋彼、DB2弄砍、MariaDB
Docker是什么
應(yīng)用容器
docker是一個(gè)開源的應(yīng)用容器
Java:write once, run anywhere ; java的核心是jvm
docker:build once ,run any where ,configure once run anthing
軟件的生態(tài)圈
Docker有自己的軟件生態(tài)圈,那么應(yīng)用是以鏡像的方式存在于倉(cāng)庫(kù)上输涕。然后用戶可以根據(jù)需要去下載對(duì)應(yīng)的鏡像
Docker能夠解決哪些問(wèn)題
開發(fā)人員
- 為了節(jié)約成本音婶,很多時(shí)候是一臺(tái)虛擬機(jī)由多個(gè)人或者多個(gè)團(tuán)隊(duì)去做
使用docker容器虛擬化技術(shù),那么每一個(gè)應(yīng)用都可以運(yùn)行在獨(dú)立的虛擬化環(huán)境中莱坎。相互隔離的
一個(gè)開發(fā)團(tuán)隊(duì)往往只有一套開發(fā)或者測(cè)試環(huán)境衣式,但是會(huì)存在同時(shí)有多個(gè)開發(fā)任務(wù)。所以會(huì)導(dǎo)致反復(fù)去修改環(huán)境或者軟件包
-
多個(gè)開發(fā)團(tuán)隊(duì)可能對(duì)軟件環(huán)境的版本有嚴(yán)格要求檐什,但是在開發(fā)迭代的過(guò)程中碴卧,軟件的升級(jí)或者各個(gè)團(tuán)隊(duì)對(duì)軟件本本的升級(jí)都會(huì)導(dǎo)致環(huán)境的變化
這樣就很容易引起虛擬機(jī)環(huán)境對(duì)我們應(yīng)用產(chǎn)生影響
機(jī)器硬件故障,導(dǎo)致系統(tǒng)需要重裝
測(cè)試人員
- 環(huán)境問(wèn)題測(cè)試出bug
- 配置不同的測(cè)試環(huán)境所浪費(fèi)的時(shí)間
運(yùn)維人員
- 環(huán)境的安裝乃正、配置住册、部署、擴(kuò)容瓮具、故障服務(wù)器遷移
Docker安裝配置
Docker對(duì)操作系統(tǒng)的要求是荧飞,必須是64位的、以及是linux3.8以上版本的內(nèi)核
Ubuntu 14.04 16.04 (使用apt-get進(jìn)行安裝)
# step 1: 安裝必要的一些系統(tǒng)工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl
software-properties-common
# step 2: 安裝GPG證書
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key
add -
# Step 3: 寫入軟件源信息
sudo add-apt-repository “deb [arch=amd64]
http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
# Step 4: 更新并安裝 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 安裝指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1ce-0ubuntu-xenial |
http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0ce-0ubuntu-xenial |
http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安裝指定版本的Docker-CE: (VERSION 例如上面的
17.03.1ce-0ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
CentOS 7 (使用yum進(jìn)行安裝)
# step 1: 安裝必要的一些系統(tǒng)工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟件源信息
sudo yum-config-manager –add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安裝 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 開啟Docker服務(wù)
sudo service docker start
# 注意:
#
官方軟件源默認(rèn)啟用了最新的軟件名党,您可以通過(guò)編輯軟件源的方式獲取各個(gè)版本的軟件包叹阔。例如官方并沒有將測(cè)試版本的軟件源置為可用,你可以通過(guò)以下方式開啟传睹。同理可以開啟各種測(cè)試版本等条获。
# vim /etc/yum.repos.d/docker-ee.repo
# 將 [docker-ce-test] 下方的 enabled=0 修改為 enabled=1
#
# 安裝指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 –showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2 : 安裝指定版本的Docker-CE: (VERSION 例如上面的
17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
安裝校驗(yàn)
root@iZbp12adskpuoxodbkqzjfZ:$ docker version
Client:
Version: 17.03.0-ce
API version: 1.26
Go version: go1.7.5
Git commit: 3a232c8
Built: Tue Feb 28 07:52:04 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.0-ce
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 3a232c8
Built: Tue Feb 28 07:52:04 2017
OS/Arch: linux/amd64
Experimental: false
配置文件
一個(gè)阿里云、另一個(gè)是DaoCloud; 都是免費(fèi)的
- 阿里云容器配置
- https://cs.console.aliyun.com/?spm=5176.2020520152.1001.44.RGHfhm#/repo
- 打開上面鏈接登錄阿里云賬戶-點(diǎn)擊鏡像-點(diǎn)擊右上角【容器鏡像服務(wù)控制臺(tái)】
- 第一次登錄【容器鏡像服務(wù)控制臺(tái)】會(huì)初始化密碼設(shè)置密碼
- 選擇【鏡像加速器】復(fù)制加速器地址:https://0426y50l.mirror.aliyuncs.com
- 修改 vi /etc/docker/daemon.json 把加速器地址設(shè)置進(jìn)去
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://0426y50l.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
測(cè)試安裝成功
docker run hello-word
Docker安裝tomcat
運(yùn)行tomcat容器
docker run -it -d -p 8080:8080 tomcat:8.0
訪問(wèn)tomcat容器
Docker的操作指令
Docker中有三個(gè)重要的點(diǎn):倉(cāng)庫(kù)(repository)蒋歌、鏡像(image)、容器(Container)
倉(cāng)庫(kù)是存儲(chǔ)鏡像的
而鏡像是軟件包
容器是基于鏡像去創(chuàng)建的委煤,基于一個(gè)鏡像可以創(chuàng)建若干個(gè)不同名字但功能相同的容器
docker run / docker ps
查看tomcat的日志:docker logs -f [container id / name]
docker的指令
針對(duì)守護(hù)進(jìn)程的系統(tǒng)資源設(shè)置和全局信息的獲忍糜汀: docker info /docker daemon
針對(duì)docker倉(cāng)庫(kù)的查詢、下載:docker search / docker pull
針對(duì)docker鏡像的查詢碧绞、創(chuàng)建府框、刪除: docker images , docker build ,docker delete
docker rmi [image id]
針對(duì)docker容器的查詢、開啟讥邻、停止: docker run /docker ps /docker stop [image id
/container id]
單個(gè)容器的詳細(xì)信息: docker inspect f6071fc4ccc9
Docker容器管理
容器標(biāo)識(shí)符
每個(gè)容器被創(chuàng)建以后迫靖,都會(huì)分配一個(gè)Container Id
作為容器唯一的標(biāo)識(shí)符院峡,后續(xù)對(duì)容器的所有操作命令都是通過(guò)container id來(lái)執(zhí)行
使用dockerps查看容器的信息、 dockerps –no-trunc 查看containerid的完整形式
容器內(nèi)部命令
有時(shí)候我們需要登錄到容器內(nèi)部執(zhí)行一些命令或者配置系宜,那么docker可以通過(guò)原生的方式去登錄到容器
Docker exec 容器名 容器內(nèi)部執(zhí)行的命令
docker exec -it【container id/name】/bin/bash
執(zhí)行完以后照激,通過(guò)exit來(lái)退出
多容器管理
安裝WORDPRESS
-
安裝mariaDb
Docker run –name mydb –env MYSQL_ROOT_PASSWORD=example -d
mariadb【mydb表示的自定義的那么 、 –env配置數(shù)據(jù)的帳號(hào)密碼】 -
安裝wordpress并關(guān)聯(lián)mariaDb
Docker run –name myWordPress –link mydb:mysql -p 8080:80 -d
wordpress[myWordPress自定義名稱]【mydb表示的是第一步所運(yùn)行的容器名稱】 Apache web服務(wù)器
Mariadb
Dockercompose
Docker提供了一個(gè)容器編排工具 docker
compose,允許用戶在一個(gè)YAML的文件中定義一組相關(guān)聯(lián)的應(yīng)用容器
可以在:https://github.com/docker/compose/下載docker-compose
放在 /usr/local/bin/docker-compose ; chmod+xdocker-compose
創(chuàng)建文件 ~/wordpress/docker-compose.yml
wordpress: image: wordpress link: db:mysql ports: 8080:80 –后面的80是wordpress容器默認(rèn)的端口盹牧。8080是映射出來(lái)的端口 db: image: mariadb environment: MYSQL_ROOT_PASSWORD: example
cd ~/wordpress && docker-compose up
docker-compose start/stop
docker-compose ~/wordpress/docker-compose.yml down
鏡像管理
鏡像可以認(rèn)為是在docker上執(zhí)行的軟件包俩垃。通過(guò)docker image -a查看所有鏡像
鏡像分層的概念
mariaDB
Wordpress
應(yīng)用層
系統(tǒng)
Ubuntu
{Union filesystem}
Docker鏡像的層的特性:
- 已有的分層只能讀不能修改
- 上層鏡像的優(yōu)先級(jí)高于底層鏡像
搭建私有倉(cāng)庫(kù)
待續(xù)。汰寓。口柳。。