? ? ? ? ? ? ? ? ??Docker由哪些部分組成


Centeros 安裝Docker
1 yum update(yum更新到最新)
2 yum install -y yum-utils? device-mapper-persistent-data lvm2
3? sudo(如果不是root,需要加sudo)yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(設(shè)置yum 源為國內(nèi)阿里云)
4?yum list docker-ce --showduplicates |sort-r (列出所有的docker)
5 yum installdocker-ce-17.12.1.ce
參考此 https://www.cnblogs.com/salmonLeeson/p/11610139.html 配置docker國內(nèi)鏡像加速器
docker服務(wù)相關(guān)的命令(damon)
systemctl start docker(啟動docker)
systemctl status docker(查看docker的狀態(tài))
systemctl stop docker(停止docker)
systemctl restart docker(啟動docker)
systemctl enable docker(開機啟動docker)
docker鏡像相關(guān)的命令
查看本地鏡像 docker images
搜索鏡像 docker search xx(聯(lián)網(wǎng)搜索鏡像)
拉取鏡像(https://hub.docker.com/ 可以查詢鏡像的地址)
刪除鏡像 docker rmi imageid或者docker rmi imagename:tag(version)
刪除全部鏡像:docker image -q(列出全部的鏡像id)
? ? ? ? ? ? ? ? ? ? ? ? ? docker rmi docker image -q
docker容器相關(guān)的命令

根據(jù)鏡像創(chuàng)建容器:
docker run -it --name=tomcattest tomcat:jdk14-openjdk-oracle /bin/bash
1 i(表示沒有客戶端連接時依然保持容器運行)? 2 t(分配終端) 3 --name給容器命名 4 鏡像以及版本? 5 /bin/bash進入容器內(nèi)部。根據(jù)下圖紅色區(qū)域可以看到
通過-it創(chuàng)建的容器,創(chuàng)建后立馬進入容器,退出后,容器也退出

docker run-id?--name=tomcattest1 tomcat:jdk14-openjdk-oracle
docker run --name xx? -d -p 8080:8080(端口) imagename
1 d后臺運行創(chuàng)建容器,通過命令才能進入容器
通過docker exec -it?tomcattest1? /bin/bash?
docker ps 查看正在運行的容器
docker ps -a查看全部的容器

退出容器:在命令行輸入exit
啟動容器 docker start containername
停止容器 docker stop containername
刪除容器 docker rm containername/containerid?
查看容器信息 docker inspect containername
殺死所以正在運行的容器 docker kill $(docker ps -a -q)
刪除所有的容器 docker rm $(docker ps -a -q)
刪除正在運行的容器 docker rm -f $(docker ps -q)
Docker容器卷

宿主機文件或目錄掛載到docker里面
docker run -it --name=xx -v 宿主機目錄:容器目錄 imagename:version
宿主和docker的內(nèi)容保持一致,修改都會互相作用
一個容器可以掛載多個目錄 ,注意 \代表不執(zhí)行命令,繼續(xù)在下一行輸入命令

注意:之前自己踩坑,容器目錄里面是和宿主機一樣的,也是有根目錄,家目錄等,所以掛載后,要進入容器內(nèi)部在對應(yīng)的目錄去查看,如下圖,

通一個數(shù)據(jù)卷可以掛載到不同的容器上,間接的實現(xiàn)容器的互相通信

多容器數(shù)據(jù)進行交換
方法一:掛載到同一個數(shù)據(jù)卷,比較麻煩,對了容器比較多的情況
方法二:配置數(shù)據(jù)卷容器


制作Docker鏡像
容器轉(zhuǎn)為鏡像

docker commit 容器id 鏡像名稱:鏡像版本號

docker save -o 壓縮文件名稱 鏡像名稱:鏡像版本號(轉(zhuǎn)成壓縮文件后)
docker load -i 壓縮文件名稱(測試人員拿到后可以將鏡像轉(zhuǎn)為容器,繼續(xù)使用)
Dockerfile概念
是一個文件,包含一條條的指令,每一條指令構(gòu)建一層,最終構(gòu)建出一個新的鏡像

docker保留字指令詳解

1 自己寫了一個dockfile ,然后使用命令build images?
docker build -f Dockerfile -t mycentos .


2 CMD 和ENTRYPOINT的區(qū)別
? 如果有兩行CMD 命令的話,最后一行會覆蓋前面的命令,如果使用ENTRYPOINT,則是追加命令


用上圖的兩個Dockerfile生成image時,第一個CMD版本的 image run的時候是不支持追加命令,會覆蓋
entrypoint版本支持追加命令,例如在run 命令追加-i ,則代表 curl -s -i http://www.baidu.com