docker
一、安裝部署
[root@foundation12 ~]#yum install -y docker-engine-1.13.1-1.el7.centos.x86_64.rpm docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm
[root@foundation12 ~]# systemctl start docker 開啟服務
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzkjM2EDO3YzM4QDM5ITNx8CX1EjNwgTMwIzLcNXZnFWbp9CXvwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
[root@foundation12 ~]# docker version 檢視docker版本
容器管理指令
# docker run -it --name vm1 ubuntu bash 建立容器
# docker ps -a 檢視容器狀态(列出所有)
# docker ps 檢視容器狀态(列出運作的)
# docker attach vm1 連接配接容器
# docker top vm1 檢視容器程序
# docker logs vm1 檢視容器指令輸出 -f 參數可以實時檢視
# docker inspect vm1 檢視容器詳情
# docker stats vm1 檢視容器資源使用率
# docker diff vm1 檢視容器修改
# docker run -d --name vm1 ubuntu bash -c "while true; do echo westos; sleep 1; done" 背景運作
# docker stop vm1 停止容器
# docker start vm1 啟動容器
# docker kill vm1 強制幹掉容器
# docker restart vm1 重新開機容器
# docker pause/unpause vm1 暫停/恢複容器
# docker rm vm1 删除容器
# docker export vm1 > vm1.tar 導出容器
# docker import vm1.tar image 導入容器為鏡像 image
鏡像管理
# docker search 查詢鏡像
# docker pull 拉取鏡像
# docker push 推送鏡像
二、拉取鏡像,啟動容器
[root@foundation12 ~]# docker search ubuntu
[root@foundation12 ~]# docker pull ubuntu
(一)game的相關測試
[root@foundation12 docker]# docker load -i game2048.tar 導入
[root@foundation12 ~]# docker images 列出鏡像
啟動容器
[root@foundation12 docker]# docker run -d --name game game2048
[root@foundation12 docker]# docker inspect game 檢視詳情,可以列出IP等資訊
通路:
看正在運作的情況
停止容器,并删除
[root@foundation12 docker]# docker kill game
[root@foundation12 docker]# docker rm game
做端口轉發,實體機IP通路
[root@foundation12 ~]# docker run -d --name game -p 8000:80 game2048
實體機,IP端口通路
(二)ubuntu的相關測試
導入ubuntu.tar鏡像
[root@foundation12 docker]# docker run --name vm1 -it ubuntu 建立容器-name 别名 -it 擷取互動式shell
-t 選項讓Docker配置設定一個僞終端(pseudo-tty)并綁定到容器的标準輸入上, -i 則讓容器的标準輸入保持打開。
實體機能做的,容器都能做
Ctrl + q + p 退出(程序還在) ctrl + d (程序stop)
檢視容器程序
[root@foundation12 docker]# docker attach vm1 重新調用
容器與實體機共享核心,将主機的檔案挂載到容器
在實體機檢視IP和橋接器情況
Docker 在啟動時會建立一個虛拟網橋 docker0,預設位址為 172.17.42.1/16, 容器啟動後都會被橋接到 docker0 上,并自動配置設定到一個 IP 位址。
docker0 不是普通的網卡,他是橋接到其他網卡的虛拟網卡,容器使用它來和主機互相通信。當建立一個docker容器的時候,它就建立了一個對接口,當資料包發送到一個接口時,另外一個接口也可以收到相同的資料包,它們是綁在一起的一對孿生接口。這對接口在容器中那一端的的名字是eth0,宿主主機端的會指定一個唯一的名字,比如vethAQI2QT這樣的名字,這種接口名字不再主機的命名空間中。所有的veth*的接口都會橋接到docker0,這樣docker就建立了在主機和所有容器之間一個虛拟共享網絡。
建立一個容器,并修改,建立file
[root@foundation12 docker]# docker exec vm1 ls 通過exec可以在容器外,對容器進行操作
[root@foundation12 docker]# docker diff vm1 檢視容器修改
[root@foundation12 docker]# docker logs vm1 檢視容器指令輸出 -f 參數可以實時檢視
[root@foundation12 docker]# docker history ubuntu
(三)nginx的相關測試
[root@foundation12 docker]# docker run -d --name web nginx 啟動
[root@foundation12 docker]# docker inspect web 檢視容器詳情
通路
容器端口映射:
端口映射與火牆的關系如下
[root@foundation12 ~]# iptables -nL -t nat
[root@foundation12 docker]# docker run -d --name vm2 -p 8000:80 nginx 做端口轉發
在實體機寫頁面
[root@foundation12 docker]# docker container cp cara.html vm2:/usr/share/nginx/html 将頁面拷貝到容器
或者如下進行挂載:
[root@foundation12 web]# docker run -d --name web -p 80:80 -v /tmp/docker/web/:/usr/share/nginx/html nginx 挂載,進行映射 實體機:容器
采用這種方式,修改頁面很友善,當要修改時,在實體機的index.html裡面進行修改即可
在浏覽器重新整理
虛拟主機
[root@foundation12 web]# docker run -it --name vm1 nginx bash 重新啟動一個容器
檢視nginx的配置檔案
[root@foundation12 docker]# vim vhost.conf 寫檔案
server {
listen 80; 指定這個虛拟主機監聽的是80端口
server_name www.cara.org; 指定這個虛拟主機名為www.cara.org
charset utf-8;
location / {
root /website; 指定此虛拟主機的實體根目錄為/website
}
}
啟動容器(端口映射,邏輯卷映射)
[root@foundation12 docker]# docker run -d --name web -p 80:80 -v /tmp/docker/web/:/website -v /tmp/docker/vhost.conf:/etc/nginx/conf.d/vhost.conf nginx
做好解析
[root@foundation12 docker]# vim /etc/hosts
通路域名