Docker的安裝與啟動
2.docker安裝與啟動
2.1安裝環境說明
docker官方建議在Ubuntu中安裝,因為Docker是基于Ubuntu發布的,而且一般Docker出現的問題Ubuntu是最先更新或者打補丁的。在很多版本的CentOS中是不支持更新最新的一些補丁包的。
由于我們學習的環境都使用的是CentOS,因此這里我們將Docker安裝到CentOS上。注意:這里建議安裝在CentOS7.x以上的版本,在CentOS6.x的版本中,安裝前需要安裝其他很多的環境而且Docker很多補丁不支持更新。
2.2在VMware Workstation中安裝CentOS7
資料已經準備了安裝好的鏡像,直接掛載即可。
掛載后,使用ip addr命令查看本地IP
2.3安裝Docker
使用yum命令在線安裝
yum install docker
2.4安裝后查看Docker版本
docker -v
2.5啟動與停止Docker
systemctl命令是系統服務管理器指令,它是 service 和 chkconfig 兩個命令組合。
l? 啟動docker:systemctl start?docker
l? 停止docker:systemctl stop?docker
l? 重啟docker:systemctl restart?docker
l? 查看docker狀態:systemctl status?docker
l? 開機啟動:systemctl enable?docker
l? 查看docker概要信息:docker info
l? 查看docker幫助文檔:docker --help
3.Docker鏡像操作
3.1什么是Docker鏡像
Docker鏡像是由文件系統疊加而成(是一種文件的存儲形式)。最底端是一個文件引導系統,即bootfs,這很像典型的Linux/Unix的引導文件系統。Docker用戶幾乎永遠不會和引導系統有什么交互。實際上,當一個容器啟動后,它將會被移動到內存中,而引導文件系統則會被卸載,以留出更多的內存供磁盤鏡像使用。Docker容器啟動是需要的一些文件,而這些文件就可以稱為Docker鏡像。
3.2列出鏡像
列出docker下的所有鏡像:docker images
l? REPOSITORY:鏡像所在的倉庫名稱
l? TAG:鏡像標簽
l? IMAGE ID:鏡像ID
l? CREATED:鏡像的創建日期(不是獲取該鏡像的日期)
l? SIZE:鏡像大小
l? 這些鏡像都是存儲在Docker宿主機的/var/lib/docker目錄下
為了區分同一個倉庫下的不同鏡像,Docker提供了一種稱為標簽(Tag)的功能。每個鏡像在列出來時都帶有一個標簽,例如12.10、12.04等等。每個標簽對組成特定鏡像的一些鏡像層進行標記(比如,標簽12.04就是對所有Ubuntu12.04鏡像層的標記)。這種機制使得同一個倉庫中可以存儲多個鏡像。--- 版本號
我們在運行同一個倉庫中的不同鏡像時,可以通過在倉庫名后面加上一個冒號和標簽名來指定該倉庫中的某一具體的鏡像,例如docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash,表明從鏡像Ubuntu:12.04啟動一個容器,而這個鏡像的操作系統就是Ubuntu:12.04。在構建容器時指定倉庫的標簽也是一個好習慣。
docker search 鏡像名稱
n? NAME:倉庫名稱
n? DESCRIPTION:鏡像描述
n? STARS:用戶評價,反應一個鏡像的受歡迎程度
n? OFFICIAL:是否官方
AUTOMATED:自動構建,表示該鏡像由Docker Hub自動構建流程創建的
3.4拉取鏡像
3.4.1從Docker Hub拉取
Docker鏡像首頁,包括官方鏡像和其它公開鏡像。Docker Hub上最受歡迎的10大鏡像(通過Docker registry API獲取不了鏡像被pull的個數,只能通過鏡像的stars數量,來衡量鏡像的流行度。毫無疑問,擁有最高stars數量的庫都是官方庫)
、
國情的原因,國內下載 Docker HUB 官方的相關鏡像比較慢,可以使用國內(docker.io)的一些鏡像加速器,鏡像保持和官方一致,關鍵是速度塊,推薦使用。Mirror與Private Registry的區別:
Private Registry(私有倉庫)是開發者或者企業自建的鏡像存儲庫,通常用來保存企業內部的 Docker 鏡像,用于內部開發流程和產品的發布、版本控制。
Mirror是一種代理中轉服務,我們(比如daocloud)提供的Mirror服務,直接對接Docker Hub的官方Registry。Docker Hub 上有數以十萬計的各類 Docker 鏡像。
在使用Private Registry時,需要在Docker Pull 或Dockerfile中直接鍵入Private Registry 的地址,通常這樣會導致與 Private Registry 的綁定,缺乏靈活性。
使用 Mirror 服務,只需要在 Docker 守護進程(Daemon)的配置文件中加入 Mirror 參數,即可在全局范圍內透明的訪問官方的 Docker Hub,避免了對 Dockerfile 鏡像引用來源的修改。
簡單來說,Mirror類似CDN,本質是官方的cache;Private Registry類似私服,跟官方沒什么關系。對用戶來說,由于用戶是要拖docker hub上的image,對應的是Mirror。yum/apt-get的Mirror又有點不一樣,它其實是把官方的庫文件整個拖到自己的服務器上做鏡像,并定時與官方做同步;而Docker Mirror只會緩存曾經使用過的image。
使用命令拉取:
docker pull ? centos:7
目前國內訪問docker hub速度上有點尷尬,使用docker Mirror勢在必行。現有國內提供docker鏡像加速服務的商家有不少,下面重點ustc鏡像。
3.4.2 ustc的鏡像
ustc是老牌的linux鏡像服務提供者了,還在遙遠的ubuntu 5.04版本的時候就在用。ustc的docker鏡像加速器速度很快。ustc docker mirror的優勢之一就是不需要注冊,是真正的公共服務。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
步驟:
(1)編輯該文件:vi /etc/docker/daemon.json? // 如果該文件不存在就手動創建;說明:在centos7.x下,通過vi。
(2)在該文件中輸入如下內容:
{
"registry-mirrors": ? ["https://docker.mirrors.ustc.edu.cn"]
}
(3)注意:一定要重啟docker服務,如果重啟docker后無法加速,可以重新啟動OS
然后通過docker pull命令下載鏡像:速度杠杠的。
3.5刪除鏡像
1、? docker rmi $IMAGE_ID:刪除指定鏡像
2、? docker rmi `docker images -q`:刪除所有鏡像
4.Docker容器操作
4.1查看容器
l? 查看正在運行容器:
docker ps
l? 查看所有的容器(啟動過的歷史容器):
docker ps –a
l? 查看最后一次運行的容器:
docker ps –l
l? 查看停止的容器
docker ps -f status=exited
4.2創建與啟動容器
l? 創建容器常用的參數說明:
l? 創建容器命令:docker run
l? -i:表示運行容器
l? -t:表示容器啟動后會進入其命令行。加入這兩個參數后,容器創建就能登錄進去。即分配一個偽終端。
l? --name :為創建的容器命名。
l? -v:表示目錄映射關系(前者是宿主機目錄,后者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。
l? -d:在run后面加上-d參數,則會創建一個守護式容器在后臺運行(這樣創建容器后不會自動登錄容器,如果只加-i -t兩個參數,創建后就會自動進去容器)。
l? -p:表示端口映射,前者是宿主機端口,后者是容器內的映射端口。可以使用多個-p做多個端口映射
4.1.1交互式容器
創建一個交互式容器并取名為mycentos
docker run -it --name=mycentos centos:7 /bin/bash
這時我們通過ps命令查看,發現可以看到啟動的容器,狀態為啟動狀態
使用exit命令 退出當前容器
然后用ps -a 命令查看發現該容器也隨之停止:
4.1.2守護式容器
創建一個守護式容器:如果對于一個需要長期運行的容器來說,我們可以創建一個守護式容器。命令如下(容器名稱不能重復):
docker run -di --name=mycentos2 centos:7
l? 登錄守護式容器方式:
docker exec -it container_name (或者 container_id) ?/bin/bash(exit退出時,容器不會停止)
dock
4.3停止與啟動容器
l? 停止正在運行的容器:docker stop $CONTAINER_NAME/ID
er run
l? 啟動已運行過的容器:docker start $CONTAINER_NAME/ID
-di --=
4.4文件拷貝
如果我們需要將文件拷貝到容器內可以使用cp命令
mycentos2 centos:docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄7
也可以將文件從容器內拷貝出來
docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄
4.5目錄掛載
我們可以在創建容器的時候,將宿主機的目錄與容器內的目錄進行映射,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器。
創建容器 添加-v參數 后邊為?? 宿主機目錄:容器目錄
docker run -di -v ? /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7
如果你共享的是多級的目錄,可能會出現權限不足的提示。
這是因為CentOS7中的安全模塊selinux把權限禁掉了,我們需要添加參數? --privileged=true? 來解決掛載的目錄沒有權限的問題
4.6查看容器IP地址
我們可以通過以下命令查看容器運行的各種數據
docker inspect mycentos2
也可以直接執行下面的命令直接輸出IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2
4.7刪除容器
l? 刪除指定的容器:docker rm $CONTAINER_ID/NAME
注意,只能刪除停止的容器
l? 刪除所有容器:docker rm `docker ps -a -q`
5.部署應用
5.1 MySQL部署
5.1.1拉取MySQL鏡像
docker pull mysql
查看鏡像
5.1.2創建MySQL容器
docker run -di --name pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 代表端口映射,格式為? 宿主機映射端口:容器運行端口
-e 代表添加環境變量? MYSQL_ROOT_PASSWORD是root用戶的登陸密碼
5.1.3進入MySQL容器,登陸MySQL
進入mysql容器
進入mysql容器
docker ? exec -it 名稱 /bin/bash
登陸mysql
mysql ? -u root -p
5.1.4查看容器IP地址
我們可以通過以下命令查看容器運行的各種數據
docker inspect 名稱
運行效果如下
5.2 tomcat部署
5.2.1拉取tomcat鏡像
docker pull tomcat:7-jre7
5.2.2創建tomcat容器
創建容器用于部署單點登錄系統(CAS)? -p表示地址映射
docker run -di --name=pinyougou_tomcat -p 9000:8080
-v /usr/local/myhtml:/usr/local/tomcat/webapps ? --privileged=true tomcat:7-jre7
5.3 Nginx部署
5.3.1拉取Nginx鏡像
docker pull nginx
5.3.2創建Nginx容器
docker run -di --name=pinyougou_nginx -p 80:80? nginx/bin/bash
5.4 Redis部署
5.4.1拉取Redis鏡像
docker pull redis
5.4.2創建Redis容器
docker run -di --name=pinyougou_redis -p ? 6379:6379 redis
6.備份與遷移
6.1容器保存為鏡像
我們可以通過以下命令將容器保存為鏡像
docker commit 名稱_nginx ? mynginx
mynginx是新的鏡像名稱
此鏡像的內容就是你當前容器的內容,接下來你可以用此鏡像再次運行新的容器
6.2鏡像備份
docker? save -o mynginx.tar mynginx
-o 輸出到的文件
執行后,運行ls命令即可看到打成的tar包
6.3鏡像恢復與遷移
首先我們先刪除掉mynginx鏡像
然后執行此命令進行恢復
docker load -i mynginx.tar
-i 輸入的文件
執行后再次查看鏡像,可以看到鏡像已經恢復
鏡像服務 Docker CentOS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。