Imagenginx
鏡像,至關於模板。Docker 鏡像是靜態的、能夠被用戶互相分享的文件,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。web
Containerdocker
容器,就是類建立的實例,依據鏡像這個模板建立出來的實體。容器的實質是進程,但與直接在宿主執行的進程不一樣,容器進程運行在一個隔離的環境,有屬於本身的獨立的命名空間,能夠擁有本身的root 文件系統、本身的網絡配置、本身的進程空間,甚至本身的用戶ID 空間。但使用起來,就好像是在一個獨立於宿主的系統下操做同樣。shell
Repositoryjson
鏡像倉庫,供用戶存儲下載鏡像。vim
分層存儲,鏡像構建時,會一層層構建,前一層是後一層的基礎。每一層構建完就不會再發生改變,後一層上的任何改變只發生在本身這一層。能夠用以前構建好的鏡像做爲基礎層,而後進一步添加新的層,以定製本身所需的內容,構建新的鏡像(基於容器構建鏡像)。centos
# yum install -y docker # systemctl start docker
# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com" ] } # systemctl restart docker
# docker version #查看docker信息 # docker info #查看docker信息 # docker images #查看本地鏡像 # docker search #查找鏡像 # docker pull #獲取鏡像 默認鏡像標籤latest # docker run #建立並運行鏡像 run=create+start -it = -i +-t 以交互模式進入容器 -i 表示打開並保持stdout -t表示分配一個終端 -d 後臺運行容器 --name 指定容器名 # docker start/stop/pause/unpause #啓動/中止/暫停/恢復 # docker ps #查看運行的容器 -a 全部容器 -l 最近容器 # crtl+d 或exit #退出正在運行容器,退出後容器爲關閉狀態 # ctrl+p ctrl+q #退出正在運行容器,退出後容器爲up狀態 # docker exec # 進入運行的容器 # docker logs #查看日誌信息 # docker rm [container ID] # 刪除容器 # docker rmi [image id] # 刪除鏡像 # docker push #上傳鏡像 # docker load/docker save # 鏡像載入/保存 # docker import/docker export # 容器導入與導出
# docker search nginx # docker pull nginx # 默認標籤latest (# docker pull nginx:latest) # docker images # docker run --name web1 -it nginx:latest /bin/bash (# docker run --name web1 && # docker exec -it web1 /bin/bash) # docker logs web1 # docker run -p 8080:80 -d nginx #將80端口映射爲8080,或者80:80仍是原先的80端口,不能夠不寫 # netstat -anp | grep 8080 #端口已經開啓 http://192.168.61.129:8080/ #測試
1.基於容器製做鏡像bash
# docker commit -p eager_wescoff #暫停ager_wescoff 容器並保存鏡像 # docker images # 查看保存的鏡像 # docker tag 81d993fe7d7b wh_k/nginx:v1.1 #打標籤 81d993fe7d7b 鏡像ID,wh_k/nginx 倉庫,v1.1 版本 # docker images # docker tag wh_k/nginx:v1.1 wh_k/nginx:v1.1_new #打第二個標籤,一個鏡像能夠包含多個標籤,一個標籤只能屬於一個鏡像。 # docker images # docker image rm wh_k/nginx:v1.1_new # 刪除標籤wh_k/nginx:v1.1_new # docker images # docker login --username=350161345@qq.com registry.cn-shanghai.aliyuncs.com # 登陸阿里雲鏡像管理控制檯 # docker tag 81d993fe7d7b registry.cn-shanghai.aliyuncs.com/wh_k/nginx:v1.1_new # 打上阿里雲鏡像對應標籤 # docker images # docker push registry.cn-shanghai.aliyuncs.com/wh_k/nginx:v1.1_new # 上傳鏡像至阿里雲 # docker pull registry.cn-shanghai.aliyuncs.com/wh_k/nginx:v1.1_new #下載鏡像
2.dockerfile製做鏡像網絡
# mkdir /wh_k/mynginx # cd /wh_k/mynginx # wget http://nginx.org/download/nginx-1.15.2.tar.gz # vim Dockerfile FROM centos RUN yum -y install gcc make pcre-devel zlib-devel tar zlib ADD nginx-1.15.2.tar.gz /usr/src/ WORKDIR /usr/src/nginx-1.15.2 RUN mkdir /usr/local/nginx \ && ./configure --prefix=/usr/local/nginx && make && make install \ && ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \ && nginx RUN rm -rf /usr/src/nginx-1.15.2 EXPOSE 80 # docker images # docker run -dit -p 8081:80 --name nginx nginx:v2 #建立並運行nginx # netstat -anp | grep 8081 # docker exec -it nginx /bin/bash #進入容器nginx [root@fec404ddc5fd nginx-1.15.2]# nginx #啓動服務 http://192.168.61.129:8081/ #測試
3.dockerfile文件說明ide
FROM:指定基礎鏡像(FROM是必備的指令,而且必須爲第一條指令)。
RUN: 用來執行命令行命令。其基本格式:
shell格式: RUN <命令> ,輸入在bash環境中的命令便可,一個dockerfile容許使用RUN不得超過127層,因此,使用一次RUN, 使用 ‘ \ ’ 換行,使用‘ && ’執行下一條命令。通常使用此種格式; exec格式: RUN <"可執行文件", "參數1", "參數2">,此種方式像是函數調用中的格式;
COPY: 複製文件。 其基本格式:
格式1:COPY <源路徑>...<目標路徑> 格式2:COPY [「<源路徑1>」,....."<目標路徑>"]
ADD: 更高級的複製文件,在COPY的基礎上增長了一些功能,若是複製的是壓縮包的話,會直接解壓,而不須要在使用RUN解壓;
WORKDIR: 指定工做目錄。其基本格式:
格式1: WORKDIR <工做目錄路徑>
CMD:容器啓動命令。其基本格式:
shell格式: CMD <命令> exec格式: CMD ["可執行文件", "參數1", "參數2"...] 參數列表格式: CMD [「參數1」, 「參數2」...],在指定了ENTRYPOINT指令後,用CMD指定具體的參數
ENTRYPOINT: 入口點。其基本格式分爲exec和shell,
ENTRYPOINT的目的和CMD同樣,都是在指定容器啓動程序及參數。ENTRYPOINT在運行中能夠替代,不過比CMD繁瑣,須要經過docker run 的參數--entrypoint 來指定。當指定了ENTRYPOINT後,CMD的含義就發生了改變,不在是直接運行其命令,而是將CMD的內容做爲參數傳遞給ENTRYPOINT指令。其執行時就變成了: <ENTRYPOINT> "<CMD>"
ENV: 設置環境變量。(均可以使用這裏使用的變量)其基本格式:
格式1:ENV <key> <value> 格式2:ENV <key1>=<value1> <key2>=<value>...
ARG: 構建參數。構建參數和ENV的效果同樣,都是設置環境變量,所不一樣的是ARG所構建的環境變量在未來容器運行時是不存在的。其基本格式:
格式1: ARG <參數名> [=<默認值>] 格式2: 該默認值能夠在構建命令 docker build 中用 --build-arg <參數名>=<值> 來覆蓋
VOLUME: 定義匿名卷。 其基本格式:
格式1: VOLUME ["<路徑1>", "<路徑2>"...] 格式2: VOLUME <路徑>
EXPOSE: 暴露端口。EXPOSE指令是聲明運行時容器所提供的端口,在啓動容器時不會在由於這個聲明而開啓端口。 其基本格式:
格式1: EXPOSE <端口1> [<端口2>...]
USER: 指定當前用戶。USER是幫助你切換到指定用戶。 其基本格式:
格式1: USER <用戶名>
HEALTCHECK: 健康檢查,判斷容器的狀態是否正常。 其基本格式:
格式1: HEALTCHECK [選項] CMD <命令> :設置檢查容器健康情況的命令 格式2: HEALTCHECK NONE: 若是基礎鏡像有健康檢查指令,使用此格式能夠屏蔽掉其健康檢查指令