docker學習筆記之基本操做

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 刪除鏡像

相關文章
相關標籤/搜索