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 開啟服務
[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 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 docker]# docker run -d --name vm2 -p 8000:80 nginx 做端口轉發
在物理機寫頁面
[root@foundation12 docker]# docker container cp cara.html vm2:/usr/share/nginx/html 將頁面拷貝到容器
docker相關實驗