前段時間重裝了系統,今天剛好有時間,就用docker安裝一個lnmp開發環境,下面是我的安裝筆記。
1. 安裝docker
這個就不說了,不會的可以看下我之前的文章《Docker介紹及安裝》。
1)啟動docker
# service docker start
2. 下載docker鏡像
官網docker鏡像網站:https://www.docker.com/,可以在這里查看官網或者第三方的docker鏡像。當然如果沒有VPN,網絡比較慢的情況下,可以考慮使用:https://docker.cn/,這是一個國內的鏡像網站。
1)下載docker鏡像
# docker pull docker.cn/docker/centos:centos6
說明:docker pull命令是從遠程下載鏡像的命令,類似git pull。docker.cn/docker/centos是國內鏡像網站centos鏡像的地址,如果要下載官方centos鏡像,直接使用centos即可。:centos6是指這個鏡像的tag,我下載的是centos6,如果要下載最新版本,可以使用:latest或者:centos7。
2)查看鏡像
# docker images
OK,可以看到centos鏡像已經下載下來了。
blob.png
3. 運行容器
根據剛剛下載的centos鏡像運行一個容器進入shell。
1)運行容器,進入該容器的shell界面
# docker run -i -t docker.cn/docker/centos:centos6 /bin/bash
現在我們已經進入容器的shell界面了,這個就是我們下載下來的centos6系統的shell,如圖:
blob.png
下面就是在容器中安裝lnmp環境。
這里就不詳細說了,如果不會安裝lnmp的,可以看這里:《centos6 下安裝nginx1.7.9+php5.6.4+mysql5.6.2》。
安裝完成lnmp之后,輸入exit退出鏡像shell界面。
blob.png
4. 制作生成新鏡像
先查看下剛剛運行的容器(安裝lnmp的)的ID,在使用該ID生成新的鏡像。
1) 查看剛剛運行的容器ID
# docker ps -lq
blob.png
可以看到ID為:fe77b1628688,下面我們提交下這個容器生成新鏡像。
2)提交生成新鏡像
# docker commit fe77b vckai/dev:v1
fe77b1628688這里一般只需要使用前幾位數就行了,只要不重復能識別到,可以不輸入全部的,vckai/dev:v1 是我生成的新鏡像名,如果輸入已有的鏡像名,則會覆蓋原有的鏡像。
blob.png
這里可以看到已經生成好一個新的鏡像了,ID為:8717b405408e3df2a12b503e327226d35d6ce118ebc66178ca2bfe440bcb8f04。
3)查看所有的鏡像
# docker images
blob.png
可以看到,剛剛我們生成的鏡像就在這里了。
5. 啟動鏡像
# docker run -d -p 80:80 -v /web:/www vckai/dev:v1 /sbin/init
-d是以Daemon模式運行。
-p 80:80 是將本地80端口映射到容器的80端口,現在可以在本地使用http://localhost訪問。
-v /web:/www 是將本地的/web目錄掛載到容器的/www(容器配置的web目錄)目錄下。
vckai/dev:v1 是要運行的鏡像名稱。
/sbin/init 是容器運行后的系統初始化操作,主要用於啟動nginx,php-fpm,mysql服務。
1)查看docker運行中的鏡像
# docker ps
blob.png
2)停止/重啟/kill/啟動容器(可選)
# docker stop/restart/kill/start <ID/Name>
更多容器操作命令可以看這篇文章:Docker學習筆記。
這個時候你已經可以使用http://localhost 訪問你的網站了,咦,奇怪,居然訪問不了!突然想起沒在容器中配置開機啟動,以至/sbin/init初始化的時候沒把nginx+php+mysql啟動起來。
現在只能先把容器停止,然后進入vckai/dev:v1這個容器,在/etc/rc.local文件中添加nginx、php和mysql的啟動運行,然后在docker commit提交覆蓋vckai/dev:v1即可。
另外,如果已經在運行中的容器,怎么進入查看呢?兩種方式,一個ssh,另外一個使用nsenter。但是不建議使用ssh進入:為什么不需要在 Docker 容器中運行 sshd。
1)安裝nsenter
# docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
2)進入運行中的容器shell
# docker-enter 65615a
65615a 是我們剛剛使用docker ps查看到的容器ID。
3)啟動容器的nginx+php
# /data/apps/nginx/sbin/nginx
# /data/apps/php/sbin/php-fpm
OK,現在打開網站已經是正常運行了!
參考資料:
Docker教程中文版本:https://code.csdn.net/u010702509/docker
Nsenter github:https://github.com/jpetazzo/nsenter
docker命令學習筆記:http://blog.csdn.net/we_shell/article/details/38368137?utm_source=tuicool