docker images 查看鏡像
docker build -t? Dockerfile runoob/ubuntu:v1 .? ?dockerfile 構(gòu)建驚喜
1鹤竭、查詢所有的none鏡像
docker images? | grep none
2、查詢所有的none鏡像的id
docker images? | grep none | awk '{print $3}'
3窝爪、刪除所有的none鏡像
docker images? | grep none | awk '{print $3}' | xargs docker rmi
docker rmi 鏡像id? 刪除單個鏡像
================
#查看所有正在運(yùn)行容器
dockers ps??
#查看所有容器
docker ps -a
#查看所有容器id
docker ps -a -q
#停止容器
docker stop <容器id>
#停止所有容器
docker stop $(docker ps -a -q)
#刪除所有未運(yùn)行的容器
docker rm $(docker ps -a -q)
#刪除一個容器
docker rm <容器ip>
docker exec -it?<容器id> bash? ? 進(jìn)去容器
========
docker run 的使用
`-i, --interactive 保持 STDIN 打開胧洒,即使沒有附加`
`-t, --tty 分配一個偽 TTY`
`-d, --detach 在后臺運(yùn)行容器并打印容器 ID`
`--privileged=true 給這個容器擴(kuò)展權(quán)限`
`--name string 為容器分配名稱`
`--rm`
`--hostname string 容器主機(jī)名`
`--restart string 容器退出時應(yīng)用的重啟策略(默認(rèn)“no”)`
`--network string 將容器連接到網(wǎng)絡(luò)(默認(rèn)“默認(rèn)”)`
`--鏈接`
`--cpus=1 -m 512M`
`-v, --volume list 綁定掛載卷(默認(rèn) [])`
掛載時設(shè)置讀寫權(quán)限
`-w --workdir string 容器內(nèi)的工作目錄`
`-p 80:80`
`-e, --env list 設(shè)置環(huán)境變量(默認(rèn) [])`
`--device list 將主機(jī)設(shè)備添加到容器(默認(rèn) [])`
`--shm-大小`
`docker.io/nginx:latest`
例:docker run -itd --privileged=true --name test --hostname test --restart unless-stopped --net=host --cpus=1 -m 512M -v /tmp:/tmp -w /opt -p 80:80? -e MYSQL_IP=192.168.1.1 --device=/dev/uhid docker.io/nginx:latest
-i, --interactive Keep STDIN open even if not attached
即使未連接STDIN(標(biāo)準(zhǔn)輸入)也保持打開狀態(tài),分配一個交互終端
-t, --tty Allocate a pseudo-TTY
表示容器啟動后會進(jìn)入其命令行每篷,與it一起使用杯瞻。
分配一個偽tty設(shè)備,可以支持終端登錄
PS:針對純操作系統(tǒng)鏡像(沒有守護(hù)進(jìn)程的)在docker run的時候需要加-it參數(shù)镐牺,否則啟動后會自動退出
-d, --detach Run container in background and print container ID
讓容器在后臺運(yùn)行并打印容器的ID。如果你的容器啟動會打印日志魁莉,那邊加-d選項(xiàng)在終端就看不到了睬涧,需要用docker logs -f 容器ID查看
--privileged=true Give extended privileges to this container
授予此容器擴(kuò)展特權(quán),也就是開啟特權(quán)模式旗唁;
這種模式下容器對docker宿主機(jī)擁有root訪問權(quán)限畦浓,允許我們以其宿主機(jī)具有(幾乎)所有能力來運(yùn)行容器,包括一些內(nèi)核特性和設(shè)備訪問检疫,慎用
--name string Assign a name to the container
給容器取一個名字讶请,用docker ps可以查看
--rm
退出容器后,容器會被刪除屎媳,常用于測試
--hostname string Container host name
設(shè)置容器里面的主機(jī)名秽梅,登陸到容器里面可以看到
--restart string Restart policy to apply when a container exits (default "no")
容器退出時的重啟策略(4種)
no抹蚀,默認(rèn)策略,在容器退出時不重啟容器
on-failure企垦,在容器非正常退出時(退出狀態(tài)非0)环壤,才重啟容器
on-failure:3,在容器非正常退出時重啟容器钞诡,最多重啟3次
always郑现,在容器退出時總是重啟容器
unless-stopped,在容器退出時總是重啟容器荧降,如果容器正常stopped接箫,然后機(jī)器重啟或docker服務(wù)重啟,容器將不會被restart
更改已運(yùn)行容器的重啟策略
docker update --restart=always test
--network string Connect a container to a network (default "default")
--network可以省略為--net
參考文章:https://www.cnblogs.com/yfalcon/p/9044246.html
標(biāo)準(zhǔn)Docker支持4種網(wǎng)絡(luò)模式
bridge 使用docker daemon指定的網(wǎng)橋朵诫,默認(rèn)為docker0辛友;使用--net=bridge指定,為默認(rèn)設(shè)置
host 容器使用主機(jī)的網(wǎng)絡(luò)
container:NAME_or_ID > 使用其他容器的網(wǎng)絡(luò)剪返,共享IP和PORT等網(wǎng)絡(luò)資源
none 容器使用自己的網(wǎng)絡(luò),使用--net=none指定
docker inspect test查看废累,使用主機(jī)網(wǎng)絡(luò),不再給容器單獨(dú)分配IP地址
--link
實(shí)現(xiàn)通過容器名訪問
docker run -d --name test2 --link test1 busybox sleep 3600
test2容器可以直接ping通test1容器名脱盲,但test1不能ping通test2容器名
之所以能夠Ping通邑滨,是因?yàn)榘裻est1的IP地址與容器名、主機(jī)名的映射寫入到了test2容器的/etc/hosts文件中
--cpus=1 -m 512M
設(shè)置容器CPU和內(nèi)存的使用上限
-v, --volume list Bind mount a volume (default [])
容器與宿主機(jī)綁定一個卷
volumes與bind mounts的區(qū)別
volumes方式:宿主機(jī)有數(shù)據(jù)時钱反,以宿主機(jī)為準(zhǔn)掖看;宿主無數(shù)據(jù),從容器復(fù)制過來面哥,再以宿主機(jī)為準(zhǔn)
bind方式的宿主機(jī)目錄會覆蓋掉容器中目錄的內(nèi)容(并不刪除哎壳,只是隱藏)
-v /opt/nginx:/etc/nginx
/opt/nginx不存在會自動創(chuàng)建;/opt/nginx會覆蓋/etc/nginx目錄下的內(nèi)容
掛載時設(shè)置讀寫權(quán)限
ro:只讀尚卫,在容器內(nèi)只讀归榕,只能通過宿主機(jī)來操作
rw:讀寫
docker run -d --name nginx -v /opt/nginx:/opt/test:ro nginx
在容器內(nèi)不能操作
在容器外可以操作
-w --workdir string Working directory inside the container
指定容器的工作目錄
-p 80:80
端口映射,前面為宿主機(jī)的端口焕毫,后面為容器服務(wù)進(jìn)程端口,訪問宿主機(jī)的80,最終會轉(zhuǎn)發(fā)給容器的80端口驶乾,實(shí)現(xiàn)方式為iptables
注意:如果采用的是–net=host方式邑飒,那么不需要做規(guī)則轉(zhuǎn)發(fā),可以直接訪問
以下是Jenkins容器使用容器網(wǎng)絡(luò)時-p的效果
-e, --env list Set environment variables (default [])
給容器聲明環(huán)境變量级乐,在容器內(nèi)部可以通過export查看
--device list Add a host device to the container (default [])
增加主機(jī)的一個設(shè)備到容器疙咸,也就是讓容器擁有訪問這個設(shè)備的權(quán)限
參考文章:https://www.cnblogs.com/vikings-blog/p/4238062.html
默認(rèn)情況下,container擁有對設(shè)備的讀风科,寫撒轮,創(chuàng)建設(shè)備文件的權(quán)限乞旦。使用:rwm來配合–device,你可以控制這些權(quán)限题山。
docker run --device=/dev/sda:/dev/xvdc --rm
--shm-size
指定shm的大小兰粉,默認(rèn)為64M
--shm-size=200m
docker.io/nginx:latest
為鏡像名:TAG標(biāo)簽,如果不寫TAG,默認(rèn)為latest;也可以用鏡像ID來代替
docker images可查看鏡像ID