【快學Docker】快速創建容器,容器常用命令


前言

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

原創聲明

本文發布於掘金號【Happyjava】。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的個人博客:http://blog.happyjava.cn。歡迎轉載,但須保留此段聲明。

創建容器

新建容器

命令如下:

docker create <image>

使用create 命令創建的容器,默認處於停止狀態,需要我們手動去啟動容器。

新建並運行容器

命令如下:

docker run <image>

通過run命令創建的容器,默認是會運行的。

常用參數如下:

-i 讓容器的標准輸入保持打開

-t 分配一個偽終端

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

--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公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM