啟動(dòng)容器相關(guān)操作:
運(yùn)行一個(gè)容器
# 運(yùn)行容器贸街,并再容器運(yùn)行后執(zhí)行pwd命令
root@jyq-virtual-machine:/# docker run ubuntu pwd
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6cf436f81810: Pull complete
987088a85b96: Pull complete
b4624b3efe06: Pull complete
d42beb8ded59: Pull complete
Digest: sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
Status: Downloaded newer image for ubuntu:latest
/ # pwd命令的輸出
# 容器樁體為exited兢榨,說(shuō)明容器已經(jīng)退出停止
root@jyq-virtual-machine:/# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
410e5ec23e74 ubuntu "pwd" 8 seconds ago Exited (0) 7 seconds ago upbeat_leakey
在后臺(tái)運(yùn)行一個(gè)容器
為了保證提供服務(wù)呻待,不能讓容器運(yùn)行后立馬退出,所以需要使容器保持常時(shí)間運(yùn)行
運(yùn)行容器時(shí)使用-d參數(shù)可以使容器在后臺(tái)一直處于運(yùn)行狀態(tài)
root@jyq-virtual-machine:/# docker run -d ubuntu /bin/bash -c 'while true; do sleep 1; done'
0346f58ef16c493be70ff0bc1a29e3c960d587210ea53bd669bcfdfb6ef4bfcd
root@jyq-virtual-machine:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0346f58ef16c ubuntu "/bin/bash -c 'while…" 6 seconds ago Up 5 seconds eloquent_jennings
啟動(dòng)操作系統(tǒng)后必須執(zhí)行一個(gè)可以一直運(yùn)行的程序郎逃,不然即使使用-d參數(shù)精绎,操作系統(tǒng)因?yàn)闆](méi)有運(yùn)行的任務(wù)狀態(tài)將為created,看不出up的狀態(tài)杏头。
查看容器運(yùn)行時(shí)執(zhí)行的歷史命令
注意:history 后面必須是鏡像的名稱(chēng),而不是容器的id
root@jyq-virtual-machine:/# docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
47b19964fb50 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 3 weeks ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B
<missing> 3 weeks ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0B
<missing> 3 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 745B
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:529264c6593975a61… 88.1MB
啟動(dòng)容器時(shí)給容器命名:
使用--name 參數(shù)在容器啟動(dòng)時(shí)給容器命名一個(gè)自己容易識(shí)別的名稱(chēng):
root@jyq-virtual-machine:/# docker run --name my-web -d -p 8081:80 httpd
a4eee9b6872928748847db3637cc4087cf5a7db7c91dac609e8c68264abcc101
root@jyq-virtual-machine:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4eee9b68729 httpd "httpd-foreground" 5 seconds ago Up 5 seconds 0.0.0.0:8081->80/tcp my-web
停止一個(gè)容器:
docker stop [長(zhǎng)ID|短ID|name]
- 可以使用容器的長(zhǎng)id
容器啟動(dòng)時(shí)輸出的ID
root@jyq-virtual-machine:/# docker run --name my-web -d -p 8081:80 httpd
a4eee9b6872928748847db3637cc4087cf5a7db7c91dac609e8c68264abcc101
- 使用短ID:
使用ps名稱(chēng)查看容器運(yùn)行狀態(tài)時(shí)的container id 哪一行
root@jyq-virtual-machine:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4eee9b68729 httpd "httpd-foreground" 5 seconds ago Up 5 seconds 0.0.0.0:8081->80/tcp my-web
- 使用容器名稱(chēng)沸呐,在啟動(dòng)容器時(shí)使用--name指定的名稱(chēng)
root@jyq-virtual-machine:/# docker stop a4eee9b68729
a4eee9b68729
root@jyq-virtual-machine:/# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4eee9b68729 httpd "httpd-foreground" 6 minutes ago Exited (0) 8 seconds ago my-web
怎么進(jìn)入一個(gè)已經(jīng)運(yùn)行的容器:
- 使用attach命令
- 使用exec -it 命令
attach 和exec的區(qū)別:
- attach 會(huì)直接連接到系統(tǒng)已經(jīng)啟動(dòng)的虛擬終端中醇王,可以產(chǎn)看到系統(tǒng)正常運(yùn)行任務(wù)的輸出;
- exec -it 將會(huì)重新啟動(dòng)一個(gè)進(jìn)程來(lái)啟動(dòng)虛擬終端崭添,不能看到系統(tǒng)正在運(yùn)行任務(wù)的輸出寓娩;
- 可以使用docker logs -f container 查看運(yùn)行容器的輸出;
容器運(yùn)行分類(lèi):
- 服務(wù)類(lèi)容器呼渣,需要一致運(yùn)行以提供一種服務(wù):
使用 -d 參數(shù)運(yùn)行容器 - 工具類(lèi)容器棘伴,只是作為測(cè)試或者調(diào)試的一種工具使用:
使用 -it交互的方式啟動(dòng)容器,退出后容器也自動(dòng)退出
停止容器屁置、啟動(dòng)容器和重啟容器:
- stop
停止容器 - start
啟動(dòng)容器 - restart
重置容器焊夸,就是先使用stop停止容器,然后使用start啟動(dòng)容器 - 容器啟動(dòng)時(shí)使用 --reatart=always 時(shí)容器能夠停止后能夠自動(dòng)啟動(dòng)
容器的掛起和解除掛起
- pause
如果需要做容器快照或者釋放主機(jī)cpu可以先將容器掛起蓝角; - unpause
將一個(gè)已經(jīng)掛起的容器重新啟用
刪除容器:
- rm
將已經(jīng)處于exited的容器刪除阱穗,以釋放主機(jī)資源饭冬。
創(chuàng)建容器和啟動(dòng)容器:
- 先使用create命令
可以使用create命令先創(chuàng)建容器,被創(chuàng)建的容器處于created狀態(tài) - 然后使用start明確啟動(dòng)已經(jīng)創(chuàng)建的容器
run命令其實(shí)是以上命令的集合