1. 程式人生 > >SpringBoot系列—docker安裝使用(windows 7)

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