docker attach: 將終端依附到容器上; 相當(dāng)于進(jìn)入到容器的 bash;
docker ps -a 查看容器的狀態(tài)
docker run -it --name ubuntu ubuntu /bin/bash: 運(yùn)行容器, 并執(zhí)行命令: /bin/bash
docker stop ubuntu; 停止運(yùn)行容器
docker start ubuntu; 重新運(yùn)行容器
docker build: 通過 Dockerfile 創(chuàng)建鏡像
-
docker cp: 在宿主機(jī)和容器之間
相互拷貝
文件:docker cp [container]:[path] [dirname]
docker cp [dirname] [container]:[path]
docker cp ubuntu:/usr/local/bin/test.sh / :
容器 ubuntu 中 /usr/local/bin/test.sh
拷貝到 / 上; docker create: 創(chuàng)建一個(gè)新的容器; 此時(shí)的容器的狀態(tài) status 為 Created
-
docker diff: 查看容器內(nèi)部發(fā)生改變的文件,
<!-- C 對(duì)應(yīng)的是文件夾, A 對(duì)應(yīng)的是文件 --> $ docker diff ubuntu C /root A /root/.bash_history
-
docker events: 實(shí)時(shí)輸出 Docker 服務(wù)端的事件, 比如: 容器的創(chuàng)建, 啟動(dòng), 關(guān)閉
$ docker events 2019-10-15T15:46:57.996904034+08:00 network connect 0438641bf7117fbafd5a10fa869bafcdcd88c5a15198a9dd60685f9c45b6cd0a (container=f160c880996717e99a98d668a54ea25b33e0fc77fcf170684f4749c34f481123, name=bridge, type=bridge) 2019-10-15T15:46:58.642726243+08:00 container start f160c880996717e99a98d668a54ea25b33e0fc77fcf170684f4749c34f481123 (image=ubuntu:16.04, name=ubuntu)
-
docker exec
: 用于容器啟動(dòng)之后, 執(zhí)行其他的任務(wù)通過 exec 命令可以創(chuàng)建兩種任務(wù): 后臺(tái)任務(wù)和交互型任務(wù)
后臺(tái)型: docker exec -d ubuntu touch 123
交互型: docker exec -it ubuntu /bin/bash: 進(jìn)入到容器的 bash
-
docker export: 將容器的文件系統(tǒng)打包成 tar 文件;
docker export -o ubuntu.tar ubuntu
docker export ubuntu > ubuntu.tar
docker history
: 顯示鏡像制作的過程; 相當(dāng)于dockfile-
docker import: 根據(jù) tar 文件的內(nèi)容新建一個(gè)鏡像, 與之前的 export 命令相對(duì)應(yīng)
- docker import ubuntu.tar ubuntu:1.0.0
docker info: 查看 docker 的系統(tǒng)信息
docker inspect: 用于查看容器的配置信息, 包含容器名, 環(huán)境變量, 運(yùn)行命令, 主機(jī)配置, 網(wǎng)絡(luò)配置和數(shù)據(jù)卷的配置
-
docker kill: 強(qiáng)制終止容器,
-
關(guān)于
stop
和kill
的區(qū)別,docker stop 命令給容器中的進(jìn)程發(fā)送
SIGTERM
信號(hào), 默認(rèn)行為是會(huì)導(dǎo)致容器退出, 程序內(nèi)部可以捕獲這個(gè)信號(hào)并自行處理, 不一定會(huì)退出;docker kill 命令, 則是給容器發(fā)送
SIGKILL
信號(hào), 這個(gè)信號(hào)會(huì)給容器必然退出;
-
docker load: 與下面的 save 命令相對(duì)應(yīng), 將下面 save 命令打包的鏡像通過 load 命令導(dǎo)入
docker logs : 用于查看容器日志, 將輸出到標(biāo)準(zhǔn)輸出的數(shù)據(jù)作為日志輸出到 docker logs 命令的終端上, 常用于后臺(tái)型容器
-
docker pause: 暫停容器內(nèi)的所有的進(jìn)程
docker stats: 可以觀察到此時(shí)的資源使用情況是固定不變的;
docker logs -f: 也可以看到?jīng)]有任何的 log 日志輸出
-
docker port - 輸出容器端口宿主機(jī)端口映射的情況
[root@localhost ~]# docker port blog 80/tcp -> 0.0.0.0:80 <!-- 容器blog的內(nèi)部端口80映射到宿主機(jī)的80端口,這樣可通過宿主機(jī)的80端口查看容器blog提供的服務(wù) -->
docker ps: 查看正在運(yùn)行的容器, -a 查看所有的容器
docker pull: 從docker hub 上拉取鏡像
docker rename: 更改容器的名字
docker restart: 重啟容器
-
docker rm ubuntu; 刪除容器;
docker rm -f ubuntu; 強(qiáng)制刪除
docker rm -f
docker ps -aq
, -q: 只列出容器 ID
docker rmi: 刪除鏡像
docker run: 讓創(chuàng)建的容器立即進(jìn)入到運(yùn)行的狀態(tài), 該命令等于 docker create 創(chuàng)建容器之后, 再使用 docker start 啟動(dòng)容器
docker stats: 動(dòng)態(tài)顯示容器的資源消耗i情況: cpu, 內(nèi)存, 網(wǎng)絡(luò)I/O
docker tag; 對(duì)一個(gè)鏡像進(jìn)行重命名
docker top: 查看容器中正在運(yùn)行的進(jìn)程
docker unpause: 恢復(fù)容器內(nèi)暫停的進(jìn)程, 與 pause 參數(shù)相對(duì)應(yīng)
docker wait: 捕獲容器停止時(shí)的退出碼
docker run 的參數(shù)
-e/--env=[] 設(shè)置環(huán)境變量
--env-file=[] 讀取一個(gè)包含了環(huán)境變量的文件
-h/--hostname 容器的主機(jī)名
--link=[] 添加一個(gè)到另一個(gè)容器的連接
--name 容器的名字
--net-bridge 為容器設(shè)置網(wǎng)絡(luò)模式
-p 容器端口映射 eg: 8080:80
--privileged=false 為容器擴(kuò)展權(quán)限
當(dāng) docker run 命令時(shí), Docker 會(huì)啟動(dòng)一個(gè)進(jìn)程, 并為這個(gè)進(jìn)程分配其獨(dú)占的文件系統(tǒng), 網(wǎng)絡(luò)資源和以此進(jìn)程為根進(jìn)程的進(jìn)程組, docker run 可以覆蓋 docker build 鏡像時(shí)的一些默認(rèn)的配置,
docker run [options] image_name [command] [args...]
- [options] 總結(jié)起來(lái)就兩類;
* 設(shè)置運(yùn)行方式, 決定容器運(yùn)行方式, 前臺(tái)還是后臺(tái), 設(shè)置 containerID; 設(shè)置網(wǎng)絡(luò)參數(shù), 設(shè)置容器的 CPU 和內(nèi)存參數(shù), 設(shè)置權(quán)限和LXC參數(shù),
* 設(shè)置鏡像的默認(rèn)資源, 用戶可以使用該命令來(lái)覆蓋構(gòu)建時(shí)的一些默認(rèn)配置
容器的網(wǎng)絡(luò)模式:
none: 關(guān)閉容器內(nèi)的網(wǎng)絡(luò)連接, 那么這個(gè)容器將不允許訪問任何外部
router
. 這個(gè)容器內(nèi)部只會(huì)有一個(gè)loopback
的接口, 而且不存在任何可以外部網(wǎng)絡(luò)的router
;Bridge: 默認(rèn)設(shè)置為
bridge 模式
, 此時(shí)主機(jī)會(huì)存一個(gè)docker0
的網(wǎng)絡(luò)接口, 同時(shí)會(huì)針對(duì)容器創(chuàng)建一對(duì)veth
接口, 其中一個(gè)veth
接口是在主機(jī)充當(dāng)網(wǎng)卡橋接作用, 另一個(gè)veth
接口存在容器的命名空間中, 并且指向容器的loopback
;docker
會(huì)自動(dòng)給這個(gè)容器分配一個(gè)ip
; 并且將容器內(nèi)的數(shù)據(jù)通過橋接轉(zhuǎn)發(fā)到外部host: 這個(gè)容器將完全共享 host 的網(wǎng)絡(luò)堆棧, host 所有的網(wǎng)絡(luò)接口將完全對(duì)容器開發(fā), 容器的主機(jī)名也會(huì)存在于主機(jī)的 hostname 中,這時(shí), 容器所有對(duì)外暴露的端口和對(duì)其他容器的連接, 將完全無(wú)效
-
Container: 這個(gè)容器將完全服用另外一個(gè)容器的網(wǎng)絡(luò)堆棧, 同時(shí)使用這個(gè)容器的名稱必須要符合下面的格式:
- --net container:<name|id>
命令
-
docker run -it --name ubuntu -d -link redis:redis-db ubuntu:16.04
- 容器連接到 redis 容器, 將 redis 容器重名為 redis-db, 這樣 ubuntu 容器可以使用 db 的相關(guān)的環(huán)境變量
docker build -t <image_name> <dockerfile_path>