【快學Docker】快速建立容器,容器經常使用命令

前言

容器是Docker的三大核心概念之一。簡單地說,容器是獨立運行的一個或一組應用,以及它們的運行態環境。對應的,虛擬機能夠理解爲模擬運行的一整套操做系統(提供了運行態環境和其餘系統環境)和跑在上面的應用。經過這篇文章,咱們來說講Docker容器的一些經常使用命令,如建立,中止,重啓,暫停等等。java

原創聲明

本文發佈於掘金號【Happyjava】。Happy的掘金地址:juejin.im/user/5cc289…,Happy的我的博客:blog.happyjava.cn。歡迎轉載,但須保留此段聲明。nginx

建立容器

新建容器

命令以下:git

docker create <image>
複製代碼

使用create 命令建立的容器,默認處於中止狀態,須要咱們手動去啓動容器。docker

新建並運行容器

命令以下:shell

docker run <image>
複製代碼

經過run命令建立的容器,默認是會運行的。ubuntu

經常使用參數以下:bash

-i 讓容器的標準輸入保持打開服務器

-t 分配一個僞終端app

-d 容器處於守護進程運行ssh

--name 設置容器的名字

-p 能夠映射宿主機端口至容器端口,如 -p 8080:8081 ,左邊爲宿主機端口,右邊爲容器端口

-v 能夠掛在宿主機目錄至容器目錄,如-v /data:/tmp/data,左邊爲宿主機目錄,右邊爲容器目錄。

如,一條實際運行容器的命令:

docker run -it -d --name my_ubuntu -p 8088:22 -v /root/ubuntu_data:/data ubuntu:latest /bin/bash
複製代碼

容器管理

查看容器列表

命令以下:

docker ps 
複製代碼

docker ps 是查看正在運行的容器,能夠添加-a 參數,查看全部容器的信息。

中止容器

中止容器的命令:

docker stop <container_name/id>
複製代碼

啓動容器

docker start <container_name/id>
複製代碼

重啓容器

docker restart <container_name/id>
複製代碼

刪除容器

命令以下:

docker rm <container_id/name>
複製代碼

若是是正在運行的容器,會提示刪除失敗,能夠經過 -f 參數強制刪除。例如,刪除正在運行的 my_ubuntu 容器:

docker rm -f my_ubuntu

複製代碼

容器日誌

能夠經過以下命令查看容器的日誌:

docker logs <id/name>

複製代碼

暫停容器

docker pause <id/name>

複製代碼

經過docker ps 命令能夠查看到容器的狀態

恢復暫停的容器

docker unpause <id/name>

複製代碼

進入容器

若是咱們建立容器時,使用了 -d 參數,那麼容器就會在後臺運行。那麼,咱們能夠經過 docker attach 命令和 docker exec 命令鏈接到容器。

docker attach命令

docker attach 命令使用以下:

docker attach <container_name/id>

複製代碼

如,我這裏鏈接建立的名爲 my_ubuntu 的容器。

docker attach my_ubuntu

複製代碼

進入容器後,其實就跟ssh登陸服務器效果彷佛同樣的:

docker attach鏈接容器,有一個致命的缺點,那就是當多個窗口同時attach到同一個容器時,全部窗口都會同步顯示,當某個窗口阻塞了,那麼全部的窗口都會被阻塞掉。例如,我經過兩個終端attach到這個my_ubuntu容器,全部的操做都會被同步:

我在一個窗口輸入東西,另一個窗口也會同步。

也是由於這樣,因此attach命令是比較少用的。

docker exec 命令

docker exec 本質上不是鏈接容器,而是在容器中執行命令,其用法以下:

docker exec -it <container_name/id> <exec>

複製代碼

其中<exec>是須要執行的命令,如在my_ubuntu容器下執行 /bin/bash 命令:

docker exec -it my_ubuntu /bin/bash

複製代碼

執行結果:

/bin/bash 這個命令,其實就是運行一個bash終端,因此咱們就能夠經過在容器中執行 /bin/bash命令來鏈接容器。

查看容器變動

容器也是支持查看變動的內容的,命令以下:

docker diff <name/id>

複製代碼

如,查看my_ubuntu的變動:

有三個符號,它們分別是:

提交容器

Docker也能夠像git同樣,能夠把變更提交爲新的鏡像。命令以下:

docker commit <container_id/name> repo/name:tag

複製代碼

如,我把本地的my_ubuntu提交:

docker commit my_ubuntu test/ubuntu:personal

複製代碼

而後查看鏡像:

提交後的鏡像,能夠推送到倉庫上,方便測試部署等。

總結

容器做爲Docker的三大核心概念之一,其有不少操做,本文也難以一一列舉,只是列舉出了本人認爲比較經常使用的一些命令。

關注公衆號領資料

搜索公衆號【Happyjava】,回覆【電子書】和【視頻】,便可獲取大量優質電子書和大數據、kafka、nginx、MySQL等視頻資料

關注Happyjava公衆號
相關文章
相關標籤/搜索