docker其實早就想學,雖然中間斷斷續續的看了點書,可是沒辦法用不到,就耽擱下來了。不是運維人員,感受把docker基本操做,dockerfile,docker compose實踐一下,應該就差很少了。php
獲取鏡像html
docker中image能夠經過docker pull 從docker倉庫中獲取相應的image。docker中image能夠理解爲類,而container能夠理解爲實例。運行docker run images 其實至關於new 一個實例。linux
docker pull nginx
獲取nginx image。默認應該是最新的。nginx
docker images 查看全部的imagesweb
建立一個容器docker
docker run --detach --publish=80:8089 --name=webserver nginxshell
在建立時候,我報出了
Error response from daemon: driver failed programming external connectivity on endpoint webserver (cbb7c44383b08966d90bb9832d4e6ca558fdbf294891f8552a5acb2a13692587): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).vim
端口綁定出現了錯誤了。文檔上是Publish a container's port(s) to the host,理解成容器80端口到宿主機8089端口。實際上,是反過來的。瀏覽器
docker run --detach --publish=8089:80 --name=webserver nginxbash
我再次運行時,出現contianer name重複問題。
檢查問題時,使用【docker ps 顯示正在運行的容器】這個命令只能看到正在運行的容器並且也看不到名字。以後使用【docker ps [-a | --all] 顯示全部的容器】查看容器
最後使用【docker rm [name | id] 刪除容器實例】 刪除該實例從新運行。
從新運行上面命令。在瀏覽器運行http://localhost:8089/
docker stop 7bd7c2779951
我這裏使用的是短id,也是能夠中止容器
docker restart webserver
從新啓動
進入容器
docker exec -it webserver bash
進入交互界面。
發現並無安裝vim,是能夠用安裝一個vim程序。這應該就是爲何會有docker export和docker impoort這個兩個命令了。
運行apt-get vim 發現竟沒有相應的包。
使用apt-get update。更新源,在從新安裝。
文件掛載
試一下掛載宿主目錄
若是容器已經運行run了,而後再給容器掛載宿主機目錄。嗯...有點麻煩。
docker commit 從新生成一次鏡像
docker commit --author "xx" --message "add vim software" webserver nginx:v1
而後從新run一次,掛載本身想要掛載的目錄
docker run -d -p 8089:80 -v /Users/xxx/PHP:/usr/share/nginx/html --name webserver3 nginx:v1
嗯,這是可行的。
同一容器安裝php
整個nginx感受仍是運行一個linux之上的。應該能夠安裝php試一試。
利用apt-get安裝php-fpm。經過127.0.0.1:9000。這個也是能夠的。
注意
運行service nginx restart 原本實在交互界面,結果容器仍是中止了。 容器中日誌須要使用docker logs
刪除鏡像
docker rmi [name:tag | id]
最後刪除鏡像。刪除的能夠看到image都是分層構建的。
注意
鏡像中若是有依賴問題,必需要按照依賴順序刪除 要刪除的鏡像,中有容器未被刪除。必需要先刪除容器,在刪除鏡像。
經過實際操做以後,發現了很多以前忽略的點。
用到的docker命令
docker pull [OPTIONS] image [:TAG|@DIGEST] 獲取image
docker images 查看全部的images
docker run [OPTIONS] images [COMMAND] [ARGV]
[--datch -d] 是保持容器在後臺持續執行
[--publish -p] 80:80 宿主機端口:容器端口
docker ps 顯示正在運行的容器
docker ps [-a | --all] 顯示全部的容器
還有端口對應的信息和容器名字
docker ps -a --filter name=webserver 顯示正在使用的容器,過濾容器名爲webserver
docker rm [name | id] 刪除容器實例
docker stop [name | id] 中止容器實例
docker restart [name | id] 重啓容器實例或者直接啓動
docker start [name | id] 啓動容器實例
docker exec -it [name | id] (unix shell) 進入交互界面
docker commit 提交容器實例成爲新的image
docker logs 查看docker下面的日誌信息
docker rmi 刪除鏡像