可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。
這裏必須瞭解2個很重要的概覽:node
鏡像能夠理解成是光盤同樣的東西,載入以後就能夠直接使用了。python
docker的鏡像能夠在哪裏下載呢?docker官方提供一個像github同樣的倉庫來存放docker的鏡像。就是dockerhub。在這裏能夠找到一些官方的鏡像或者別人修改過的第三方鏡像。
docerkhub地址
至於怎麼下載,很簡單隻要執行如下命令便可linux
docker pull [鏡像名]
docker的鏡像事實上是有版本區分的在pull的時候能夠指定版本。若是不指定默認會下載最新版本。git
docker pull node:10-alpine
成功下載以後,鏡像就保存在本機了。github
下載鏡像以後怎麼查看本身已經有的鏡像呢?
執行如下命令以後能夠看到本機已經有的鏡像。web
docker images
輸出信息docker
REPOSITORY TAG IMAGE ID CREATED SIZE node 10-alpine 852391892b9f 2 years ago 742MB
接下來就可使用咱們下載的鏡像了,運行鏡像的命令是:ubuntu
docker run --rm -it [鏡像名]
便可運行鏡像,能夠看到終端已經進入本身的鏡像環境了。
這裏有兩個參數centos
it通常都是一塊兒出現的。
這裏能夠加上/bin/bash
,能夠進入容器的終端中。bash
docker run --rm -it [鏡像名] /bin/bash
這時終端已經進去容器內了
// 看到容器內部分信息 root@07eac52f677e:/# cat /proc/version Linux version 4.19.27-linuxkit (root@82332b297024) (gcc version 8.2.0 (Alpine 8.2.0)) #1 SMP Sun Mar 10 18:51:44 UTC 2019
若是要退出就執行exit便可。
容器能夠理解成一個提供給咱們運行鏡像的環境。
在運行鏡像以後執行
docker ps -a
能夠看到當前的容器列表。
這裏參數-a
表明查看全部容器。若是不加a只顯示正在運行的。
這裏須要提到一個參數-d
。
docker run -itd [鏡像名]
加上d以後運行鏡像後會返回容器id。
這是時候執行docker ps -a
就能夠看到容器列表。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0e2ba846e831 node:6.11 "node" About a minute ago Up About a minute focused_shannon
用上面的命令咱們能夠知道本身容器的id
docker exec -it [容器id] /bin/bash
這裏docker exec
是一個進入容器的命令,該命令在退出容器後,容器能夠繼續執行。此外命令能夠直接執行命令。
假如咱們須要中止容器時,只要執行docker stop [容器id]
便可。
假如咱們須要中止容器時,只要執行docker rm [容器id]
便可。
若是容器中想用本機的內容進行操做能夠用-v
來把本機的內容掛載到容器內。
docker run -it -v /test:/soft centos /bin/bash
這裏在容器的/soft中就會有本機中/test的文件。這裏:
先後的路徑都應該用絕對路徑。
容器中能夠運行一些網絡應用,要讓外部也能夠訪問這些應用,能夠經過 -P
或 -p
參數來指定端口映射。
若是用-P
運行容器以後,能夠用 docker ps
看到端口狀況。
// 運行鏡像 runoob@runoob:~$ docker run -d -P training/webapp python app.py fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d // 查看看端口狀況 runoob@runoob:~$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS NAMES fce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper
若是是用-p
運行容器,能夠指定端口映射。
runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py 33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0
另外,咱們能夠指定容器綁定的網絡地址,好比綁定 127.0.0.1。
runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py 6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a
docker port 命令可讓咱們快捷地查看端口的綁定狀況。
runoob@runoob:~$ docker port adoring_stonebraker 5000 127.0.0.1:5001
上面若是咱們經過端口映射能夠搭建一個從容器連接本機的關係。這樣就能夠經過不一樣的容器連接到主機,而後間接連接不一樣的容器。這是一些簡單程序的方法。若是想要讓容器之間直接連接須要可使用【網絡】。
docker network create -d bridge 【網絡名】
// 運行第一個容器並連接到剛剛建立的網絡 docker run -itd --name test1 --network test-net ubuntu /bin/bash // 運行第二個容器並連接到剛剛建立的網絡 docker run -itd --name test2 --network test-net ubuntu /bin/bash
此時進入其中一個容器
docker exec -it test1 /bin/bash
用ping來證明容器已經連接
ping test2
能夠看到test1和test2已經連接了。