Docker快速入門(1)

Docker快速入門

簡述

可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 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

  • --rm,關閉以後自動刪除容器。
  • -i,把交互界面保留着。
  • -t,分配一個虛擬的終端。

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 :是容器內部端口隨機映射到主機的高端口。
  • -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 【網絡名】
  • -d:參數指定 Docker 網絡類型,有 bridge、overlay。其中 overlay 網絡類型用於 Swarm mode,在本小節中你能夠忽略它。

鏈接容器

// 運行第一個容器並連接到剛剛建立的網絡
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已經連接了。

相關文章
相關標籤/搜索