用Docker嘗試搭建了一個Apache2服務器,整體安裝很簡單,但是從容器中退出后,Apache2服務器也就隨之停止,網上有很多說可以通過docker run 加上-d參數可以使得服務器跑在后台,但是我試了以后,發現-d啟動起來的容器的狀態是exit,而且用docker start也無法改變狀態,不知道是我操作有誤,還是其他的原因,如果其他朋友有更好的解決方法,歡迎留言交流。
經過一番摸索,使用了如下方法,終於 得以解決。
因為是學習之用,故從最開始配置docker開始記錄,大神請忽略這部分。
1、首先是安裝docker,Linux下很簡單,apt-get就可以了
2、然后是下載響應的鏡像,我這里下載了ubuntu:14.04/ubuntu:16.06:
docker pull ubuntu:14.04 docker pull ubuntu:16.04
3、啟動一個容器,安裝我們需要的服務器環境(apache\php\vim……,根據自己服務器需要即可)
docker run -it ubuntu:14.04 /bin/bash
可以看到,我們已經進入到我們的docker容器中來了,接下來就是按照正常的程序安裝我們需要的軟件即可
安裝方法有很多,Debian系的apt-get install;紅帽系的:yum install;這里不再贅述
4、安裝完成后,我們需要保留下我們已經安裝好的容器,以備后用
這一步有兩種方式
(1)如果只是一台服務器自己用,可以直接用:docker commit來構建
docker commit -m "Apache2 Server" -a "toor" 7dd7ef463447(CONTAINER ID) server/ubuntu-t:14.04
這里解釋下參數:-m 容器的注釋,一般告訴我們這個容器是用來干什么的
-a 表示容器的維護者,一般是容器創建者
后面的那串數字是你的容器號,就是圖中紅色方框標識出來的字符串
再后面的server/ubuntu-t是你給這個容器起的別名,冒號后面是你給容器標記的版本號。這部分是為了唯一標識這個容器
接下來我們就可以通過命令:“docker images” 看到自己創建好的容器了,如下圖紅色標識的位置所示
(2)如果我們需要把做好的容器與他人分享,這就需要通過docker build方式來制作,這里以我們剛才制作的server/ubuntu-t為例,方式如下:
首先新建一個目錄:apache-server
mkdir apache-server
然后在apache-server文件夾下創建一個Dockerfile文本文件,並向其中寫入基本的控制語句:
FROM server/ubuntu-t:14.04 #指定使用哪一個鏡像
MAINTAINER toor #指定鏡像維護者
進入apache-server文件夾,執行下列語句
docker build -t="server/ubuntu-t1:14.04" .
說明一下參數:-t參數指定新的tag名稱,即唯一確定鏡像的連個標識符
我們可以看到新的鏡像id,docker images也可以看到新的鏡像,如下。
5、接下來就是如何解決我們讓含有Apache的服務器能正常后台工作的步驟了
(1)通過docker run來啟動docker
docker run -it -p 8080:80 server/ubuntu:14.04 /bin/bash
(2)正常啟動容器,進入到容器的shell后,開啟apache2服務
/etc/init.d/apache2 start
(3)服務啟動后,按下ctrl+d退出容器
(4)我們看到,此時容器的狀態是exited,我們啟動這個容器
docker start c74fdcdfe7da(CONTAINER ID)
(5)容器啟動起來后,進入容器重新開啟apache2服務,然后ctrl+d退出容器
我們看到這次容器的狀態依舊是UP的。測試相應的端口轉發也是正常的,這樣我們就可以通過docker對外安全的提供服務了。
(6)如果要停止相應的容器,執行相應的停止命令即可:
docker stop c74fdcdfe7da(CONTAINER ID)