SpringBoot系列—docker安裝使用(windows 7)
Docker概述
Docker是一個輕量級容器技術,類似於虛擬機器技術。docker是直接執行在當前作業系統(linux)之上,而不是虛擬機器中,但是也實現了虛擬機器技術的資源隔離,效能遠遠高於虛擬機器技術。
Docker支援將一個軟體編譯成一個映象(image),在這個映象裡做好對軟體的各種配置,然後釋出這個映象,使用者可以執行這個映象,執行中的映象稱之為容器(container),容器的啟動時非常快的,一般都是以秒為單位。目前主流的軟體以及非主流的軟體都有人將其封裝成docker映象,我們只需下載docker映象,然後執行這個映象就可以快速的獲得已做好配置可執行的軟體。我們常用的redis,mongo,mysql,rabbitmq,使用docker後我們將不再手動下載配置這些軟體。
windows環境下安裝
因為docker的執行原理是基於Linux的,所以docker只能執行在Linux上。windows和mac系統安裝docker時需要啟動一個VirtualBox的虛擬機器,在虛擬機器裡執行docker。
Boot2Docker 下載地址:https://github.com/boot2docker/windows-installer/releases,選擇相應版本的
完整版安裝,所有選項全部選擇,點選下一步知道安裝完成,自動重啟電腦後,桌面上會出現兩個快捷方式:Boot2Docker Start和Oracle VM VirtualBox
選擇dockerStart 啟動docker,docker -v 驗證版本
注意:有時候會出現 [email protected]`s password:
不知道密碼是是什麼,參照其他部落格或論壇有人提示輸入以下命令可以解決,但是實在不曉得,這些命令從哪輸入。。。
boot2docker stop
boot2docker download
boot2docker start
解決方案:
進入安裝目錄:C:\Program Files\Boot2Docker for Windows
先執行delete.sh指令碼,然後執行start.sh指令碼,經過等待docker啟動了
命令列輸入:boot2docker ssh
執行hello-world映象:docker run hello-world,不存在會自動下載,下載完成再執行該命令
OK,安裝完成
下載映象並執行容器
docker pull image-name(例如 docker pull redis:2.1.18)
下載完的映象有:
[email protected]:~$ docker images
REPOSITORY(映象名) | TAG(軟體版本) | IMAGE ID (當前映象的唯一標識) | CREATED(當前映象建立時間) | VIRTUAL SIZE(當前映象大小) |
hello-world | latest | f054dc87ed76 | 5 days ago | 1.84 kB |
rabbitmq | latest | c48da0152cd0 | 11 days ago | 177.1 MB |
mongo | latest | 9c790b19f694 | 3 weeks ago | 359.9 MB |
mysql | latest | 3d13bedcbf9d | 5 weeks ago | 407.3 MB |
redis | 2.8.21 | 1a721decd792 | 22 months ago | 109 MB |
執行映象為容器的命令:
docker run -d -p 6379:6379 --name rediscontainer1 redis:2.8.21(一個映象可以執行多個容器)
docker run --name first-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql
docker容器中執行的軟體所使用的埠,在本機和本機的區域網是不能訪問的,所以我們需要將docker容器中的埠對映到當前主機的埠上,這樣我們就在本機和本機所在的區域網就可以訪問該軟體了。
目前windows下執行的docker其實是執行在VirtualBox虛擬機器中的,即我們當前的本機並不是我們當前的開發機而是虛擬機器,所以我們還需要做一次埠對映,將虛擬機器的埠對映到當前的開發機。
常用命令
檢視容器列表:
[email protected]:~$ docker ps
CONTAINER ID(啟動時生成的id) | IMAGE(該容器的映象) | COMMAND(容器啟動時呼叫的命令) | CREATED(容器建立時間) | STATUS(當前容器的狀態) | PORTS(系統所用埠號) | NAMES(給容器定義的名稱) |
79d5a24b508c | redis:2.8.21 | "/entrypoint.sh redi | 12 minutes ago | Up 12 minutes | 0.0.0.0:6379->6379/tcp | redis |
d01b42766a0d | mysql | "docker-entrypoint.s | 22 minutes ago | Up 22 minutes | 0.0.0.0:3306->3306/tcp | first-mysql |
刪除容器:
單個:docker rm containerId
全部:docker rm $(docker ps -a -q)
容器stop後才可以刪除
stop:docker stop containerId/containerName
刪除映象:
單個:docker rmi image-id
全部:docker rmi $(docker images -q)
檢視日誌:
docker logs container-name/container-id