1.指令
鏡像
-
啓動docker
systemctl start docker -
顯示docker系統信息
docker info -
登錄docker倉庫服務
docker login docker.io
-
搜索鏡像
docker search alpine -
拉取鏡像
docker pull alpine
docker pull alpine:3.10.3
docker pull docker.io/library/alpine:3.10.3鏡像的名字構成:註冊名字(倉庫在哪註冊的) / 倉庫名字 / 鏡像名 : 標籤名
-
查看已安裝的鏡像
docker images
docker image ls
-
創建容器,運行鏡像
docker run hello-world -
將指定鏡像保存成 tar 歸檔文件
docker save 4b614599c521 > alpine:latest_with_1.txt.tar -
從tar文件恢復鏡像
docker load < alpine:latest_with_1.txt.tar -
刪除鏡像
通過鏡像ID的方式刪除,若存在多個tag引用了這個鏡像,要加-f
刪除
docker rmi f70734b6a266
docker rmi -f f70734b6a266
docker rmi docker.io/gaoyangofchendu/alpine -
爲鏡像打標籤
docker tag f70734b6a266 docker.io/gaoyangofchendu/alpine:latest -
推送鏡像到Dockerhub
docker push docker.io/gaoyangofchendu/alpine:latest -
查看鏡像/容器的元數據信息
docker inspect 0e26dab0a7ab
容器
-
查看所有容器
docker ps -a -
運行容器
docker run -ti docker.io/alpine /bin/sh(啓動時,運行指令/bin/sh)
docker run --rm docker.io/alpine:latest /bin/echo hello
docker run -ti --name myalpine docker.io/alpine_1.txt /bin/sh
docker run --rm --name mynginx -d -p81:80 docker.io/nginx:v1.12.2
docker run -d --rm --name nginx_with_baidu -d -p82:80 -v/root/html:/usr/share/nginx/html docker.io/nginx:v1.12.2
docker run --rm -e E_OPTS=asdf docker.io/alpine:latest printenv
- run命令參數
-t:爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;
-i:以交互模式運行容器,通常與 -t 同時使用;
–rm:退出容器以後,自動刪除容器。即在docker ps -a中看不到了
–name:啓動容器時,爲容器取一個名字
-d:後臺啓動
-p:端口映射 宿主:容器
-v:目錄映射 宿主:容器
-e:啓動容器時,爲容器指定環境變量
- run命令參數
-
進入運行中的容器
docker exec -ti a24bb4013296 /bin/sh -
啓動/停止/重啓已有的容器
docker start/stop/restart a24bb4013296 -
刪除容器
docker rm 7d90955a9202
docker rm -f 7d90955a9202 -
以當前容器創建新的鏡像
docker commit -p c4924b5d4e85 docker.io/alpine_1.txt-p :在commit時,將容器暫停。
-
查看容器的運行日誌
docker logs -f 0e26dab0a7ab
Dockerfile
Dockerfile:包含了構建docker鏡像源碼的文件
-
通過Dockerfile創建鏡像
docker build . -t docker.io/gaoyangofchendu/alpine:latest_with_my
通過當前路徑下的Dockerfile創建docker.io/gaoyangofchendu/alpine:latest_with_my鏡像-t: 鏡像的名字及標籤
-
FROM
Dockerfile的第一個非註釋行指令必須是FROM,用於指明鏡像構建過程中的基準鏡像FROM docker.io/nginx
-
USER
指定運行容器時的用戶名或 UID,默認是rootUSER nginx
-
WORKDIR
用戶的工作主目錄,默認是根目錄WORKDIR /usr/share/nginx/html
-
ADD
把資源添加到鏡像裏ADD index.html /usr/share/nginx/html/index.html
-
EXPOSE
鏡像需要暴露的端口(對應啓動容器時 -P)EXPOSE 80
-
ENV
構建鏡像時指定環境變量ENV JAVA_HOME /data/soft/jdk1.8.0_65
-
RUN
構建鏡像時執行的指令RUN yum install -y httpd
-
CMD
啓動容器時執行的指令CMD ["httpd","-D","FOREGROUND"] #httpd -D FOREGROUND
-
ENTRYPOINT
啓動容器時執行的腳本。默認是/entrypoint.shENTRYPOINT /xxx.sh #/xxx.sh是鏡像內的路徑
FROM docker.io/nginx
USER nginx
WORKDIR /usr/share/nginx/html
docker build . -t docker.io/gaoyangofchendu/nginx:latest_dockerfile
docker run --rm -ti --name nginx123 docker.io/gaoyangofchendu/nginx:latest_dockerfile /bin/bash
FROM docker.io/nginx
ADD index.html /usr/share/nginx/html/index.html
EXPOSE 80
docker build . -t docker.io/gaoyangofchendu/nginx:latest_with_index
docker run --rm -d --name nginx123 -P docker.io/gaoyangofchendu/nginx:latest_with_index
2.配置
- /etc/docker/daemon.json
“registry-mirrors”: [“http://hub-mirror.c.163.com”]
3.原理
容器的生命週期
- 檢查本地是否存在鏡像,不存在就從遠程倉庫檢索
- 利用鏡像啓動容器
- 分配一個文件系統,並在只讀的鏡像層外掛載一層可讀寫層
- 從宿主機配置的網橋接口中橋接一個虛擬接口到容器
- 從地址池配置一個IP地址給容器
- 執行用戶指定的指令
- 執行完畢後容器終止