Docker簡介
docker可以用來創建虛擬環境跑應用,各個應用能起到隔離作用。
使用方法也很簡單,就是獲取鏡像,使用鏡像,配置鏡像,對應的應用就能快速跑起來了
以httpd為例
1.搜索鏡像 docker search httpd
2.獲取鏡像 docker pull httpd
3.運行鏡像 docker run --name httpdtest -p 80:80 httpd #--name起名字方便識別。-p 80:80 容器端口:宿主機映射端口,可選。
4.容器狀態 docker ps(運行中的容器)或docker ps -a(所有狀態的容器)
5.進入容器 docker exec -it 容器id bash #通過bash進入容器,容器id可通過docker ps獲取
6.刪除鏡像 docker rmi 鏡像id
7.重啟容器 docker restart 容器id
8.文件復制 docker cp 容器id:/容器文件目錄 /宿主機目錄 #將容器內部的文件復制到宿主機目錄下
docker cp /宿主機目錄 容器id:/容器文件目錄 #將宿主機目錄內容復制到容器內部目錄
9.系統鏡像 docker run -d -it --name centos7 centos /bin/bash #運行centos鏡像,-d后台運行,-it互動終端方式,/bin/bash啟動bash否則會自動終止該centos容器
10.指定版本 docker pull centos:7 #可以通過:后指定版本,例如默認centos的版本為8,我們可以這樣指定為7的版本
11.容器文件持久化
容器有一個比較麻煩的地方,就是每次重啟之后會導致容器內的文件重置為初始化狀態。所以我們還需要對容器內的文件進行持久化配置
持久化配置有兩種方法
方法一:直接復制。如docker cp 容器id:/etc/prometheus /zhao #將容器內部的文件復制到宿主機的/zhao文件夾下
方法二:docker run --name myprometheus -v /zhao/prometheus:/etc/prometheus -d 鏡像id #其中-v是指映射邏輯卷的意思,將宿主機上的/zhao/prometheus里的文件和文件夾復制到容器的/etc/prometheus里。-d是指后台運行
問題匯總:
1.問題描述:容器已啟動,但是docker ps沒有顯示
解決方法:docker ps -a查看全部docker應用
補充說明:如有運行異常的,使用stop是停止不了的,需要使用docker rm 加上containerID才行。這個rm我還不確定,建議謹慎操作
2.問題描述:提示httpd: Could not reliably determine the server's fully qualified domain name
解決方法:find / -name httpd.conf然后查找ServerName,把改參數值改為 localhost:80,然后重啟docker的httpd
補充說明;注意端口不要被占用了
3.問題描述:編輯文件時,發現沒有vim命令,也無法yum安裝,因為yum命令也沒有。
解決方法:(並不是通用的,只是部分容器可行):
進入容器內部,執行以下命令:
apt-get update
apt-get install vim
4.問題描述:容器開啟后,外部無法正常訪問服務,但是宿主機測試該服務是正常的
可能原因:Linux內核限制了網絡轉發導致
解決方法:sysctl -w net.ipv4.ip_forward=1 #允許ipv4轉發
