Docker的容器使用與鏈接-Window

啓動容器

啓動容器以前須要先拉取鏡像,而後經過 run 命令啓動容器,同一個鏡像能夠啓動多個容器,只要執行屢次 run 命令就好了。咱們這邊啓動 centos 的鏡像。redis

PS D:\> docker run -it centos /bin/bash
[root@6c7369854385 /]#

參數說明:docker

-i: 交互式操做centos

-t: 終端緩存

centos : centos 鏡像bash

/bin/bash:放在鏡像名後的是命令,這裏咱們但願有個交互式 Shell,所以用的是 /bin/bash。網絡

要退出終端,直接輸入 exit。run 命令至關於執行了 create 和 start 命令。tcp

上面的命令是前臺運行的,運行後直接進入容器內,若是退出了容器就變爲已退出狀態,能夠經過增長 -d 參數表示後臺運行,這樣不會在執行 run 命令後進入容器內操做。測試

對於中止的容器可使用 start 命令啓動。spa

PS D:\> docker start 5bdc26bb5efa

或者經過 restart 命令重啓容器3d

PS D:\> docker restart 5bdc26bb5efa

查看容器

經過 ps 命令能夠查看容器列表

PS D:\> docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
6c7369854385        centos              "/bin/bash"         3 minutes ago       Exited (0) 53 seconds ago                       angry_lichterman

-a 表示顯示全部的容器,無論任何狀態。若是不加 -a 默認顯示運行中的。

容器總過有7種狀態 created(已建立)、restarting(重啓中)、running(運行中)、removing(刪除中)、paused(已暫停)、exited(已中止 )和dead(已死亡)。

中止容器

中止容器使用 stop 命令,加上容器 id

PS D:\> docker stop 5bdc26bb5efa

刪除容器

刪除容器用 rm 命令

PS D:\> docker rm 5bdc26bb5efa

或者經過如下命令刪除全部的已中止的容器

PS D:\> docker container prune

進入容器

經過 run 命令咱們建立了容器,咱們能夠經過 exec 或 attach 命令進入容器,在容器內部指定操做。二者有個區別,就是經過 attach 命令進入容器後經過 exit 退出,容器將會變爲 exited 狀態,exec 不會。

PS D:\> docker exec -it 5bdc26bb5efa /bin/bash
PS D:\> docker attach 5bdc26bb5efa

經過上面用法也能夠看出,attach 不會在容器中建立進程執行額外的命令,只是附着到容器上。exec會在運行的容器上建立進程執行新的命令。

容器的導出和導入

若是要導出本地某個容器,可使用 export 命令都出容器快照

PS D:\> docker export 5bdc26bb5efa > exportCentos.tar

默認導出到當前位置,上述命令表示導出到 D 盤。

 

 導入快照能夠用 import 命令從容器快照文件中再導入爲鏡像,如下實例將快照文件exportCentos.tar 導入到鏡像 xu/centos:v1

PS D:\> cat exportCentos.tar | docker import - xu/centos:v1

導入容器快照能夠是一個路徑,也能夠是一個 URL

容器鏈接-端口映射

前面咱們用 run 命令啓動了容器,好比咱們啓動了一個 redis 的容器,那麼咱們須要訪問這個容器來存儲咱們的緩存,能夠經過 -P 或 -p 參數來指定端口映射。

-P :是容器內部端口隨機映射到主機的高端口。

-p : 是容器內部端口綁定到指定的主機端口和主機的網絡地址。

使用 -P :

PS D:\> docker run -d -P redis

查看容器能夠看到容器的6379端口綁定了主機的32770端口

PS D:\> docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                            PORTS                     NAMES
01b6077295ac        redis               "docker-entrypoint.s…"   3 seconds ago        Up 3 seconds                      0.0.0.0:32770->6379/tcp   modest_golick

使用 -p,指定了主機端口爲6666,ip爲127.0.0.1,容器端口爲 tcp ,後面的 tcp 表示綁定 tcp 端口,默認就是 tcp ,還能夠設置爲 udp :

PS D:\> docker run -d -p 127.0.0.1:6666:6379/tcp redis

經過 port 命令能夠查看端口綁定狀況

PS D:\> docker port 8b7db8c10c85
6379/tcp -> 127.0.0.1:6666

 咱們能夠用 Redis Desktop Manager 測試鏈接下,能夠看到以下鏈接成功啦。

容器鏈接-局域網鏈接

除了端口映射,咱們還能夠創建一個網絡,將容器加入到這個網絡中,這樣容器之間能夠在這個網絡中相互訪問,咱們先創建這個網絡

PS D:\> docker network create -d bridge test-net
5cb11e23cb3ad1bfea61452f1448dd3a67b34680dc1c5655203211fbe4c777ce

參數說明:

-d:參數指定 Docker 網絡類型,有 bridge、overlay。其中 overlay 網絡類型用於 Swarm mode,此處忽略。

而後經過 network 命令查看網絡

PS D:\> docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
c594c3f53367        bridge              bridge              local
a98ee54f88d4        host                host                local
3d3d4b7c007a        none                null                local
5cb11e23cb3a        test-net            bridge              local

 咱們能夠經過以下語句刪除網絡

PS D:\> docker network rm test-net

咱們在運行容器的時候能夠鏈接到指定的網絡,創建兩個 redis 容器

PS D:\> docker run -itd --name redis_1 --network test-net redis
PS D:\> docker run -itd --name redis_2 --network test-net redis

咱們進入 redis_1 容器添加一個鍵值對,而後經過 redis_2 容器鏈接 redis_1 容器上的 redis 獲取值,以下:

PS D:\> docker exec -it redis_1 /bin/bash
root@6bd2da3b7854:/data# redis-cli -h redis_1
redis_1:6379> set mykey myvalue
OK
redis_1:6379> get mykey
"myvalue"
PS D:\> docker exec -it redis_2 /bin/bash
root@6bd2da3b7854:/data# redis-cli -h redis_1
redis_1:6379> get mykey

能夠看到 redis_1 和 redis_2 是相互連通的

容器信息

經過 inspect 命令能夠看到容器的信息

相關文章
相關標籤/搜索