這裏採用Dockerfile 來構建自己的nginx 鏡像
mkdir mynginx 新建一個目錄
touch Dockerfile新建一個Dockerfile
vim Dockerfile 並加入如下命令
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
這個 Dockerfile 很簡單,一共就兩行涉及到了兩條指令:FROM 和 RUN,FROM 表示獲取指定基礎鏡像,RUN 執行命令,在執行的過程中重寫了 nginx 的默認頁面信息,將信息替換爲:Hello, Docker!。
在 Dockerfile 文件所在目錄執行:
docker build -t nginx:v1 .
命令最後有一個. 表示當前目錄,標籤爲v1
docker images
查看所有鏡像,v1的這個就是你的
接下來使用 docker run 命令來啓動容器
docker run --name docker_nginx_v1 -d -p 80:80 nginx:v1
這條命令會用 nginx 鏡像啓動一個容器,命名爲docker_nginx_v1
,並且映射了 80 端口,這樣我們可以用瀏覽器去訪問這個 nginx 服務器:http://192.168.0.54/
,頁面返回信息:
修改容器內容
容器啓動後,需要對容器內的文件進行進一步的完善,可以使用docker exec -it xx bash
命令再次進行修改,以上面的示例爲基礎,修改 nginx 啓動頁面內容:
docker exec -it docker_nginx_v1 bash
root@3729b97e8226:/# echo '<h1>Hello, Docker neo!</h1>' > /usr/share/nginx/html/index.html
root@3729b97e8226:/# exit
exit
以交互式終端方式進入 docker_nginx_v1 容器,並執行了 bash 命令,也就是獲得一個可操作的 Shell。然後,我們用<h1>Hello, Docker neo!</h1>
覆蓋了 /usr/share/nginx/html/index.html
的內容。
再次刷新瀏覽器,會發現內容被改變。
修改了容器的文件,也就是改動了容器的存儲層,可以通過 docker diff 命令看到具體的改動。
設置文件掛載目錄
docker 容器不支持vim 編輯,修改起來比較麻煩,可以設置文件掛載目錄,把容器的目錄掛載到宿主機上,這樣直接修改宿主機的就行了
例如:
run --name mynginx -p 80:80 -v /opt/nginx/data/html:/usr/share/nginx/html -d nginx:v1
其中 -v /opt/nginx/data/html:/usr/share/nginx/html
就是把容器的/usr/share/nginx/html 目錄掛載到 /opt/nginx/data/html
注意需要先在宿主機上創建這個目錄,然後把容器上的該目錄下的文件複製過來
可以用docker cp docker_nginx_v1:/usr/share/nginx/html /opt/nginx/data/html
docker ps 查看運行的鏡像
docker stop 2af1 停掉鏡像
docker run --name mynginx -p 80:80 -v /opt/nginx/data/html:/usr/share/nginx/html -d nginx:v1
修改宿主機的html頁面刷新網頁會發現也變了