操作Docker容器
操作Docker容器
容器是獨立運行的一個或一組應用,以及它們的運行態環境。對應的,虛擬機可以理解為模擬運行的一整套操作系統(提供了運行態環境和其他系統環境)和跑在上面的應用。
啟動容器:
啟動容器有兩種方式,一種是基于鏡像新建一個容器并啟動,另外一個是將在終止狀態(stopped)的容器重新啟動。因為Docker容器是在太輕量級了,很多時候用戶都是隨時刪除和新創建容器。
?
新建并啟動:主要命令為?docker?run
docker?run?ubuntu:18.04?/bin/echo?'Hello?world'
如果鏡像存在就直接啟動了,如果不存在就是自動從官方倉庫拉取下載之后并啟動,我本機是有這個鏡像,直接就輸出?Hello?world?了。
下面的命令則啟動一個bash終端,允許用戶進行交互。
docker?run?-t?-i?ubuntu:18.04?/bin/bash
啟動-t?選項讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入上,-i?則讓容器的標準輸入保持打開。在交互模式下,可以通過所有創建的終端來輸入命令。
?
當利用docker?run?來創建容器時,Docker在后臺運行的標準操作包括:
啟動已終止容器Docker?container?start??(或者直接docker?start)
停止和關閉是stop和restar
?
后臺運行
更多時候,需要讓docker在后臺運行而不是直接把執行結果輸出在當前宿主機下,通過-d參數實現。
例子:
不使用-d參數
docker?run?ubuntu:18.04?/bin/sh?-c?"while?true;?do?echo?hello?world;sleep?1;?done"
?
容器會把輸出的結果(STDOUT)打印到宿主機上面,直接強制退出的話,容器就退出了。
如果使用-d的話
docker?run?-d?ubuntu:18.04?/bin/sh?-c?"while?true;?do?echo?hello?world;sleep?1;?done"
9a615ec487e9dfd4d246d391fb804e786610a45239cda2e8687e43a70580566d
不會有輸出,就直接輸出容器的id,此時容器會在后臺運行并不會把輸出結果(STDOUT)打印到宿主機上面(輸出結果可以用docker?logs?查看)
?
使用-d?參數啟動后會返回一個唯一的id,也可以通過docker?container?ls命令來查看容器信息。
?
進入容器
????在使用-d參數時,容器啟動后會進入后臺。
????某些時候需要進入容器進行操作,包括使用docker?attach命令或者docker?exec?命令,推薦使用exec,因為attach可能導致容器退出。
?
attach命令
docker?run?-dit?ubuntu
docker?container?ls
docker?attach?655bdc811cd8
此時已經進入了終端?exit,后容器就會直接停止,可以通過docker?container?ls再看下,發現退出了。
?
exec命令
-i?-t?參數,docker?exec?后邊可以跟多個參數,這里是-i?-t參數。(交互+偽終端)
?
exit退出后不會跟attach一樣導致容器直接也退出了。
?
導出和導入容器
導出:docker?export
例子:
docker?container?ls?-a
docker?export?0e172d70f90e?>?ubuntu.tar
?
那個紅色的就是容器導出來的快照文件。
?
導入快照?docker?import
cat?ubuntu.tar?|?docker?import?-?test/ubuntu:v1.0
?
也可以通過指定?URL?或者某個目錄來導入
docker?import?http://example.com/exampleimage.tgz?example/imagerepo
ps:用戶即可以使用docker?load?來導入鏡像存儲文件到本地鏡像庫,也可以使用docker?import來導入一個容器快照到本地鏡像庫。區別是容器快照文件將丟棄所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),而鏡像存儲文件將保存完整記錄,體積也大。從容器快照文件導入是可以重新制定標簽等元數據信息。
刪除容器
Docker?container?rm刪除終止狀態的容器。如果是刪除運行中的容器?可以添加-f,Docker會發送SIGKILL信號給容器。如果是一次性清理所有終止狀態的容器可以直接
docker?container?prune
?
?
總結
以上是生活随笔為你收集整理的操作Docker容器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dockerfile多阶段构建
- 下一篇: Docker阿里云镜像存储服务