起因:之前是為了學(xué)docker而去學(xué)習(xí)捧杉,之后在項(xiàng)目的實(shí)踐過程中陕见,逐步把自身所學(xué)運(yùn)用到項(xiàng)目中去,發(fā)現(xiàn)實(shí)踐和學(xué)習(xí)還是不同的味抖,加油评甜。
1、Docker鏡像相關(guān)的命令
常用的操作鏡像的命令
詳細(xì)命令:
1仔涩、查看鏡像
docker images
#或者
docker image ls
REPOSITORY:鏡像名稱
TAG:鏡像標(biāo)簽 (默認(rèn)是可以省略的,也就是latest)
IMAGE ID:鏡像ID
CREATED:鏡像的創(chuàng)建日期(不是獲取該鏡像的日期)
SIZE:鏡像大小
這些鏡像都是存儲(chǔ)在Docker宿主機(jī)的/var/lib/docker目錄下
2蜕着、搜索鏡像
如果你需要從網(wǎng)絡(luò)中查找需要的鏡像,可以通過以下命令搜索
docker search 鏡像名稱
NAME:倉庫名稱
DESCRIPTION:鏡像描述
STARS:用戶評(píng)價(jià)红柱,反應(yīng)一個(gè)鏡像的受歡迎程度
OFFICIAL:是否官方
AUTOMATED:自動(dòng)構(gòu)建承匣,表示該鏡像由Docker Hub自動(dòng)構(gòu)建流程創(chuàng)建的
3、拉取鏡像
格式:docker pull 鏡像名稱[:TAG]
#例如锤悄,我要下載centos7鏡像
docker pull centos:7
docker pull redis
docker pull tomcat:8.5.47-jdk8-openjdk
4韧骗、刪除鏡像
docker rmi 鏡像ID
docker rmi 鏡像名稱
docker rmi 鏡像名稱:tag
docker rmi `docker images -q` 刪除所有鏡像(謹(jǐn)慎操作)
小結(jié)
1:查看 docker images
2:下載鏡像的命令: docker pull 鏡像名稱[:TAG] 如果TAG不指定,那么下載的最新版本零聚,就相當(dāng)于自動(dòng)增加: :latest
3:刪除鏡像:docker rmi 鏡像名稱|鏡像ID
2袍暴、 容器創(chuàng)建與啟動(dòng)容器
掌握創(chuàng)建與啟動(dòng)容器的命令
1些侍、查看容器
查看最后一次運(yùn)行的容器
docker ps -l
查看運(yùn)行容器
docker ps
查看所有容器( 推薦)
docker ps -a
2、創(chuàng)建容器 docker run 常用的參數(shù)說明:
詳細(xì)命令:
docker run --help
創(chuàng)建容器例子
(1)交互式方式創(chuàng)建容器(創(chuàng)建以后就進(jìn)入到容器內(nèi)部了)
docker run -it --name 容器名稱 鏡像名稱:標(biāo)簽 /bin/bash
這時(shí)我們通過ps命令查看政模,發(fā)現(xiàn)可以看到啟動(dòng)的容器岗宣,狀態(tài)為啟動(dòng)狀態(tài) 退出當(dāng)前容器 exit
(2)守護(hù)式方式創(chuàng)建容器:(默認(rèn)自動(dòng)啟動(dòng)你的容器)
docker run -di --name 容器名稱 鏡像名稱:標(biāo)簽
登錄守護(hù)式容器方式: docker exec -it 容器名稱 (或者容器ID) /bin/bash
以交互式和以守護(hù)式創(chuàng)建容器都可以,個(gè)人偏向于守護(hù)式創(chuàng)建容器
(3) 容器相關(guān)命令
#停止容器:
docker stop 容器名稱(或者容器ID)
docker stop 容器名稱(或者容器ID) 淋样,容器名稱(或者容器ID)
#重啟容器:
docker restart 容器名稱(或者容器ID)
docker restart 容器名稱(或者容器ID) 耗式,容器名稱(或者容器ID)
# 啟動(dòng)容器:
docker start 容器名稱(或者容器ID)
docker start 容器名稱(或者容器ID)容器名稱(或者容器ID)
# 刪除容器
docker rm 容器名稱(或者容器ID)
docker rm 容器名稱(或者容器ID) 容器名稱(或者容器ID)
docker rm -f $(docker ps -q -a) 刪除所有容器
# 查詢啟動(dòng)日志
docker logs -f 容器id(容器名字)
注意:
刪除容器的時(shí)候,一定要先執(zhí)行停止容器命令趁猴。
如果啟動(dòng)容器出錯(cuò)刊咳,把網(wǎng)卡重新設(shè)置如下:
# 出現(xiàn)如下類似錯(cuò)誤
#COMMAND_FAILED: '/sbin/iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 8111 -j DNAT --to-destination 172.17.0.6:8111 ! -i docker0' failed: iptables: No chain/target/match by that name.
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
systemctl start docker
重啟docker后解決
查看容器資源利用率問題:
docker stats 容器id|名字
3.網(wǎng)絡(luò)
使用-p或者--net進(jìn)行宿主機(jī)端口映射
默認(rèn)情況下Docker采用的是:橋接模式
橋接模式 brige
注:-p 是 --pushlish 的縮寫
docker run -di --name mytomcat -p 8080:8080 tomcat:8.5.47-jdk8-openjdk
#等價(jià)于
#docker run -di --name mytomcat --publish 8080:8080 tomcat:8.5.47-jdk8-openjdk
host模式,使用--net=host指定
但如果啟動(dòng)容器的時(shí)候使用host模式儡司,那么這個(gè)容器將不會(huì)獲得一個(gè)獨(dú)立的Network Namespace娱挨,而是和宿主機(jī)共用一個(gè)Network Namespace。容器將不會(huì)虛擬出自己的網(wǎng)卡捕犬,配置自己的IP等跷坝,而是使用宿主機(jī)的IP和端口
docker run -it --name mytomcat --net=host tomcat:8.5.47-jdk8-openjdk
一定關(guān)閉宿主機(jī)的防火墻:
systemctl disabled firewalld
systemctl stop firewalld
4.文件拷貝
如果我們需要將文件拷貝到容器內(nèi)可以使用cp命令
docker cp 需要拷貝的文件或目錄 [容器名稱|ID]:容器目錄
> docker cp hello.txt mynginx:/usr/local
#也可以將文件從容器內(nèi)拷貝出來
docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄
> docker cp mynginx:/usr/local/hello.txt hello.txt
5.目錄掛載(卷Volume)
其實(shí)就是修改宿主機(jī)的文件,會(huì)自動(dòng)修改容器內(nèi)部的文件碉碉。
我們可以在創(chuàng)建容器的時(shí)候探孝,將宿主機(jī)的目錄與容器內(nèi)的目錄進(jìn)行映射,這樣我們就可以通過修改宿主機(jī)某個(gè)目錄的文件從而去影響容器誉裆。創(chuàng)建容器 添加-v參數(shù) 后邊為 宿主機(jī)目錄:容器目錄,例如:
docker run -d -it --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
#或者
docker run -d -it --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx
查看IP和相關(guān)的安裝信息和目錄
docker inspect [容器名|容器ID]
> docker inspect tomcat
> docker inspect nginx
完整命令如下--Mount以容器為主
1:創(chuàng)建一個(gè)卷
docker volume create mynginx-vol
2:查看卷 /var/lib/docker/volume
docker volume ls
3:查看卷的詳細(xì)信息缸濒,是為了去得知romcat/nginx的安裝目錄
docker volume inspect mynginx-vol
4:創(chuàng)建一個(gè)nginx的目錄掛載和卷的映射
docker run -d -it --name mytomcat --mount src=mynginx-vol,dst=/usr/share/nginx/html -p 90:80 nginx
核心代碼: --mount src=mynginx-vol,dst=/usr/share/nginx/html