1. Docker簡介
Docker官方網址: https://docs.docker.com/ 英文地址
Docker中文網址: http://www.docker.org.cn/ 中文地址
Docker是基於Go語言實現的雲開源項目,誕生於2013年初,最初發起者是dotClouw公司。Docker 自開源後受到廣泛的關注和討論,目前已有多個相關項目,逐斷形成了圍Docker的生態體系。dotCloud 公司後來也改名爲Docker Ine。
Docker是一個開源的容器引擎,它有助於更快地交付應用。 Docker可將應用程序和基礎設施層隔離,並且能將基礎設施當作程序一樣進行管理。使用 Docker可更快地打包、測試以及部署應用程序,並可以縮短從編寫到部署運行代碼的週期。
Docker架構
2. Docker安裝
要求:Docker 要求 CentOS 系統的內核版本在 3.10以上 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker
安裝步驟:
① 通過 uname -r 命令查看你當前的內核版本
uname -r
② 使用 root 權限登錄 Centos。確保 yum 包更新到最新
yum -y update
③ 卸載舊版本(如果安裝過舊版本的話)
yum remove docker docker-common docker-selinux docker-engine
④ 安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
⑤ 設置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
⑥ 可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
yum list docker-ce --showduplicates | sort -r
⑦ 安裝docker
sudo yum install -y docker-ce #由於repo中默認只開啓stable倉庫,故這裏安裝的是最新穩定版18.03.1
⑧ 啓動並加入開機啓動
systemctl start docker
systemctl enable docker
⑨ 驗證安裝是否成功(有client和server兩部分表示docker安裝啓動都成功了)
docker version
3. 配置Docker阿里鏡像加速
詳細參考: https://cr.console.aliyun.com/cn-hangzhou/mirrors
進入上述網址,鍵入紅框中的命令:
[root@localhost local]# sudo mkdir -p /etc/docker
[root@localhost local]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
此時cat一下,可以查看到配置的鏡像地址
[root@localhost local]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
最後,鍵入以下命令,重啓Docker即可:
[root@localhost local]# sudo systemctl daemon-reload
[root@localhost local]# sudo systemctl restart docker
4. Docker下載鏡像文件
① 搜索鏡像
[root@localhost local]# docker search java
可使用 docker search命令搜索存放在 Docker Hub(這是docker官方提供的存放所有docker鏡像軟件的地方,類似maven的中央倉庫)中的鏡像。執行該命令後, Docker就會在Docker Hub中搜索含有 java這個關鍵詞的鏡像倉庫。
② 下載鏡像(這裏以下載java8爲例)
[root@localhost local]# docker pull java:8
使用命令docker pull命令即可從 Docker Registry上下載鏡像,執行該命令後,Docker會從 Docker Hub中的 java倉庫下載最新版本的 Java鏡像。如果要下載指定版本則在java後面加冒號指定版本。
③ 列出本地鏡像(已下載的鏡像)
[root@localhost local]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
java 8 d23bdf5b1b1b 23 months ago 643MB
可以看到,剛纔下載的java8已經在本地鏡像列表中
5. Docker安裝Nginx服務器
① 安裝
[root@localhost local]# docker run -d -p 81:80 nginx //不指定端口號默認以最新的進行下載
參數說明:
-d 後臺運行
-p 宿主機端口:容器端口 #開放容器端口到宿主機端口
瀏覽器訪問http://Docker宿主機IP:81,即可訪問成功:
② docker run 和 docker pull 的區別
docker run 會檢測在本地images倉庫有沒有鏡像文件,如果沒有,就會去遠程倉庫下載,放到images,同時會創建一個容器運行,但必須指定端口號(一般docker run用的比較多)
docker pull只會下載鏡像文件放到images裏面去
③ docker ps 命令 --> 列出正在運行的容器
[root@localhost local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f0b6cd60181 nginx "nginx -g 'daemon of…" 14 minutes ago Up 14 minutes 0.0.0.0:81->80/tcp compassionate_northcutt
④ docker inspect containerid 命令 -->查看容器的信息
[root@localhost local]# docker inspect 7f0b6cd60181
可以看到以下信息:
此時通過curl命令可以訪問到,而瀏覽器則訪問不到。:
[root@localhost ~]# curl 172.17.0.2:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
⑤ 其他命令
systemctl restart docker 重啓docker
systemctl stop firewalld 關閉防火牆
6. Docker配置Nginx負載均衡
通過Docker安裝的Nginx如何配置nginx.conf?
Docker通過容器運行Nginx-----安裝的目錄 在容器中
/容器id/etc/nginx
/容器id/etc/mysql
默認情況下安裝在 容器的etc目錄
Docker 安裝的軟件如何修改配置文件的?
答案:容器掛載外部配置文件 –v(使用掛載方式,外部的配置文件覆蓋內部容器配置文件)
詳細步驟:
① 創建掛載目錄
# mkdir -p /data/nginx/{conf,conf.d,html,logs}
上傳配置好的nginx.conf配置文件到/data/nginx/conf目錄下
② 停止/刪除正在運行的docker的nginx容器:
docker stop 容器名(names屬性)
docker rm 容器id(container_id屬性)
③ 啓動容器
其中第一個紅色爲宿主機的nginx配置文件絕對路徑
第二個紅色爲nignx的docker容器的nginx配置文件的絕對路徑
docker run --name mynginx -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx -d docker.io/nginx
④ 進入nginx的docker容器(重點)
docker container exec -it f0b1c8ab3633 /bin/bash
備註:f0b1c8ab3633指的是docker ps查出來的nginx的容器id(container id屬性)
可以發現,命令行的前綴變爲了 root@4938c1288b47:/#
nginx在docker容器的配置文件默認配置在虛擬容器的/etc/nginx目錄下
⑤ 拓展
容器:即虛擬操作系統
宿主機的命令行:[root@localhost local]#
docker容器的命令行:root@4938c1288b47:/#
進入容器後,該docker是非常輕量的,默認沒有vi插件,但也不必裝,不建議直接在容器中更改配置文件等信息,所以採用掛載的方式進行容宿主機的配置文件和容器內的配置文件進行同步。
7. Docker常用命令
docker images 查看本地鏡像文件
docker ps 查看正在運行的容器
docker ps –a 查看所有的容器
docker container exec -it container_id /bin/bash 進入到容器
exit 退出(docker容器中的命令,鍵入此命令,退回宿主機命令行)
docker version 查看版本
docker run -d -p 80:80 nginx 啓動nginx容器
docker rmi imgage_id 刪除鏡像(docker imges查出來的結果)
docker rm 容器id 刪除容器
docker stop 容器name 停止容器