DOCKER安裝及基本使用

1 DOCKER 基本結(jié)構(gòu)

專業(yè)從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),高端網(wǎng)站制作設(shè)計(jì),小程序定制開發(fā),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠服務(wù),采用H5高端網(wǎng)站建設(shè)+CSS3前端渲染技術(shù),響應(yīng)式網(wǎng)站,讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。

DOCKER安裝及基本使用

Docker客戶端:Docker是C/S的應(yīng)用架構(gòu)模型,一般客戶端和服務(wù)端都在同一個(gè)二進(jìn)制文件中。所以通常我們都可以通過Docker命令來運(yùn)行相關(guān)操作。

但是也可以通過用于程序基于API來操作。

Docker daemon:Docker 的服務(wù)端,通常表示的包都是Docker Engine,接受用戶請求,并進(jìn)行相關(guān)操作。

容器:相當(dāng)于虛擬機(jī)的概念,但是簡化成一個(gè)相互隔離的操作系統(tǒng),無需我們關(guān)系具體細(xì)節(jié),我們像集裝箱一樣打包就用即可。

鏡像:容器的基礎(chǔ),通過Unionfs文件系統(tǒng)特性,實(shí)現(xiàn)不同鏡像堆疊。是啟動(dòng)容器的一個(gè)基礎(chǔ)。用Dockerfile可以方便定制。

Registry:存放鏡像的地方,通過Registry我們就可以實(shí)現(xiàn)容器鏡像的打包帶走。

2 DOCKER 常用命令
2.1 Docker 鏡像管理
一、顯示本地鏡像:

[root@test mnt]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

upstram_nginx latest f3c5dcc79825 9 days ago 669 MB

lnmp/nginx 0.2 9fe8cdcb3e43 9 days ago 669 MB

lnmp/MySQL 1.0 2c612a810853 10 days ago 374 MB

lnmp/php 1.0 fc59ef00ea8a 10 days ago 1.23 GB

二、鏡像查找:

[root@test mnt]# docker search nginx

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

nginx Official build of Nginx. 5508 [OK]

jwilder/nginx-proxy Automated Nginx reverse... 961 [OK]

richarvey/nginx-php-fpm Container running Nginx 354 [OK]

million12/nginx-php Nginx + PHP-FPM 5.5, 5.6,. 76 [OK]

三、鏡像刪除:

docker rmi image id (當(dāng)容器存在的時(shí)候刪不掉,應(yīng)該先刪除鏡像再刪除容器)

四、鏡像拉取和推送

Docker pull 即可

五、查看鏡像的具體信息:

[root@test mnt]# docker inspect f3c5dcc79825 ##可以看到相關(guān)具體配置,和鏡像分層。

2.2 Docker 容器管理
一、創(chuàng)建容器:

docker create nginx(鏡像名)

二、查看運(yùn)行容器:

[root@node3 ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

三、查看所有容器:

docker ps -a (顯示所有的容器,包括未運(yùn)行的)

四、啟動(dòng)容器

docker start nginx(容器名/id) 啟動(dòng)容器

五、運(yùn)行容器:

[root@test mnt]# docker run -d --name web(容器別名) nginx(鏡像名)

六、刪除容器:

[root@test mnt]# docker rm -f web(容器名/id) -f 強(qiáng)制刪除

七、進(jìn)入容器:

[root@test mnt]# docker exec -it nginx(容器名/id) /bin/bash

2.3 Docker Volume
Docker Volume(卷)的概念,簡單來說,Volume就是目錄或者文件,它可以繞過容器系統(tǒng),而以正常的文件或者目錄的形式存在于宿主機(jī)上。適用于容器外持久化存儲文件,或共享文件。掛載文件/目錄到容器:

docker run -itd -v /opt/webapps(本地文件或目錄):/opt/apache-tomcat-7.0.55/webapps(容器內(nèi)文件或目錄) -p 80:8080 --name tomcat icfw/tomcat:1.0

注:默認(rèn)文件可讀可寫,指定掛載權(quán)限可自行參考docker手冊。

3 DOCKER 快速安裝
3.1 軟件版本
操作系統(tǒng):Centos 7.0

3.2 開始安裝
http://www.daocloud.io/

由于國內(nèi)的源比較卡,所以我們推薦使用daocloud的方式,調(diào)用遠(yuǎn)程腳本,安裝即可:

[root@test ~]# curl -sSL https://get.daocloud.io/docker | sh

#為了快速拉取鏡像,還要daocloud.因?yàn)樵趪鴥?nèi)通常拉取Docker hub的鏡像都是被墻的。

[root@test ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://681a96df.m.daocloud.io

docker version >= 1.12

{"registry-mirrors": ["http://681a96df.m.daocloud.io"],

"live-restore": true

}

Success.

You need to restart docker to take effect: sudo systemctl restart docker

##實(shí)際上是相關(guān)配置寫入/etc/docker/daemon.json:指定去這個(gè)倉庫下,因?yàn)槟J(rèn)是去官方的Docker hub下載鏡像的。

[root@test ~]# cat /etc/docker/daemon.json

{"registry-mirrors": ["http://681a96df.m.daocloud.io"],

"live-restore": true

}

##編輯配置文件(/usr/lib/systemd/system/docker.service),允許使用docker 客戶端遠(yuǎn)程連接。

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

然后重啟docker:

systemctl restart docker

##查看docker狀態(tài),docker 讀取的是哪個(gè)配置文件:

[root@test ~]# systemctl status docker

docker.service - Docker Application Container Engine

Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)

Active: active (running) since Sat 2017-03-11 16:43:51 CST; 1min 11s ago

 Docs: https://docs.docker.com

###這里我們知道centos讀取的是/usr/lib/systemd/system/docker.service這個(gè)文件

三、測試docker是否啟動(dòng)正常:

[root@master ~]# docker -H 127.0.0.1:2375 images

4 DOCKER 鏡像制作
4.1 DOCKER FILE 指令
DOCKER提倡使用Dockfile的方式來構(gòu)建鏡像,Dockerfile是Docker的解釋型語言,通過提交Dockerfile來實(shí)現(xiàn)對鏡像的構(gòu)建。

Dockerfile忽略大小寫,注釋用#開頭,

FROM指令:

FROM centos:centos7

##表示基礎(chǔ)鏡像來自哪里,本地鏡像沒有就從倉庫獲取,指令必須放在最前面第一條。

MAINTAINER(用來指定鏡像創(chuàng)建者信息)

MAINTAINER admin admin@icfw.com.cn

##鏡像構(gòu)建作者的相關(guān)信息

RUN(執(zhí)行相關(guān)的系統(tǒng)命令)

格式:RUN <command> 或者 RUN ["executable","param1","param2"]

RUN yum install supervisor –y

CMD(系統(tǒng)啟動(dòng)時(shí)候執(zhí)行指令,但是會被第一條啟動(dòng)所覆蓋)

CMD ["executable","param1","param2"] 使用 exec 執(zhí)行,推薦方式;

CMD command param1 param2 在 /bin/sh 中執(zhí)行,提供給需要交互的應(yīng)用;

CMD ["param1","param2"] 提供給ENTRYPOINT的默認(rèn)參數(shù);

##CMD指定容器啟動(dòng)是執(zhí)行的命令,每個(gè)Dockerfile只能有一條CMD命令,如果指定了多條,只有最后一條會被執(zhí)行。如果你在啟動(dòng)容器的時(shí)候也指定的命令,那么會覆蓋Dockerfile構(gòu)建的鏡像里面的CMD命令。

ENTRYPOINT(也是系統(tǒng)啟動(dòng)執(zhí)行命令)

格式:

ENTRYPOINT ["executable", "param1","param2"]

ENTRYPOINT command param1 param2(shell中執(zhí)行)。

##和CMD一樣也是最后一條命令執(zhí)行,但是和CMD不同的是,CMD命令會被docker run 中執(zhí)行的命令所覆蓋,當(dāng)然兩者可以結(jié)合:

ENTRYPOINT ["python", "/test.py"]

CMD ["sleep", "10"]

##在啟動(dòng)的時(shí)候等于就執(zhí)行了,python /test.py sleep 10

##注意

當(dāng)獨(dú)自使用時(shí),如果你還使用了CMD命令且CMD是一個(gè)完整的可執(zhí)行的命令,那么CMD指令和ENTRYPOINT會互相覆蓋只有最后一個(gè)CMD或者ENTRYPOINT有效。

EXPOSE(指定容器需要映射到宿主機(jī)器的端口)

EXPOSE <port> [<port>...]

##在編寫Docker的時(shí)候暴露容器的端口,但是只是在內(nèi)部暴露,外部想映射還需要-p選項(xiàng)

VOLUME(指定掛載點(diǎn)))

VOLUME ["<mountpoint>"]

##是文件可以持久化存在,或者在容器之間共享數(shù)據(jù)。

ENV(用于設(shè)置環(huán)境變量)

ENV <key> <value>

##構(gòu)建鏡像和容器啟動(dòng)時(shí)候都可以使用

ADD與COPY

ADD <src> <dest>

##兩個(gè)都是復(fù)制本機(jī)文件到鏡像里,區(qū)別是ADD如果文件是可識別的壓縮格式,則docker會幫忙解壓縮.

WORKDIR

WORKDIR /path/to/workdir

##切換當(dāng)前工作目錄,寫建議寫絕對路徑,寫相對路徑會疊加。

11、ONBUILD(在子鏡像中執(zhí)行)

ONBUILD <Dockerfile關(guān)鍵字>

##ONBUILD 指定的命令在構(gòu)建鏡像時(shí)并不執(zhí)行,而是在它的子鏡像中執(zhí)行。

USER(設(shè)置container容器的用戶)

User nginx

##容器執(zhí)行時(shí)候指定的用戶,默認(rèn)是root:

arg

格式:ARG<name>[=<default value>]

##解釋:ARG指定了一個(gè)變量在docker build的時(shí)候使用,可以使用--build-arg <varname>=<value>來指定參數(shù)的值,不過如果構(gòu)建的時(shí)候不指定就會報(bào)錯(cuò)。

4.2 構(gòu)建一個(gè)tomcat鏡像示例
一、創(chuàng)建目錄新建Dockerfile和相關(guān)包:

[root@docker-registry images]# tree tomcat/

tomcat/

├── apache-tomcat-7.0.55.tar.gz

├── Centos-7.repo

├── Dockerfile

├── epel-7.repo

├── jdk1.8.0_181.tar.gz

├── server.xml

└── supervisord.conf

二、編寫Dockerfile:

[root@docker-registry tomcat]# cat Dockerfile

#pull down centos image

FROM centos:centos7

MAINTAINER chenjixiong@icfw.com.cn

ADD epel-7.repo /etc/yum.repos.d/

ADD Centos-7.repo /etc/yum.repos.d/

RUN yum install -y net-tools

RUN yum install -y iputils

RUN yum install -y supervisor

RUN mkdir -p /var/log/supervisor

ADD ./apache-tomcat-7.0.55.tar.gz /opt

ADD ./server.xml /opt/apache-tomcat-7.0.55/conf

ADD ./jdk1.8.0_181.tar.gz /opt

#set environment variable

ENV JAVA_HOME /opt/jdk1.8.0_181

ENV PATH $JAVA_HOME/bin:$PATH

ENV CATALINA_HOME /opt/apache-tomcat-7.0.55

ENV PATH $PATH:$CATALINA_HOME/bin

EXPOSE 8080

COPY supervisord.conf /etc/supervisor/supervisord.conf

CMD supervisord -c /etc/supervisor/supervisord.conf

3、用supervisor來管理進(jìn)程:

[root@docker-registry tomcat]# cat supervisord.conf

[supervisord]

nodaemon=true

[program:tomcat]

command=/opt/apache-tomcat-7.0.55/bin/catalina.sh run

4、開始構(gòu)建:

[root@docker-registry tomcat]# docker build -t icfw/tomcat:1.0 .

5、運(yùn)行:

[root@node3 tomcat]# docker run -dit -p 8080:8080 --name tomcat i/tomcat:1.0

c29c5aaf63a73126e6976c02b1c9bd06e0a0af6514d9c697e1128ddb3a27

[root@docker-registry tomcat]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

fdc4e4f09938 icfw/tomcat:1.0 "/bin/sh -c 'supervi…" 33 seconds ago Up 32 seconds 0.0.0.0:8080->8080/tcp tomcat

6、訪問一下

IP:8080即可。

5 DOCKER 私有倉庫搭建
5.1 下載鏡像倉庫
[root@docker-registry test]# docker pull registry

5.2 啟動(dòng)并且掛載鏡像倉庫到本地磁盤
[root@docker-registry test]# docker run -d -p 5000:5000 --restart=always -v /registry:/var/lib/registry registry

5.3 上傳鏡像
1、 配置鏡像注冊地址并重啟docker服務(wù):

[root@docker-registry ~]# vi /etc/docker/daemon.json

{"registry-mirrors": ["http://681a96df.m.daocloud.io"],"insecure-registries":["http://192.168.20.20:5000"]}

2、 本地鏡像打個(gè)標(biāo)簽然后上傳:

[root@docker-registry test]# [root@docker-registry test]# docker tag icfw/tomcat:1.0 192.168.20.20:5000/icfw/tomcat:1.0

#192.168.20.20:5000表示倉庫地址,icfw/tomcat表示鏡像名稱,1.0表示版本號。

3、 直接上傳:

[root@docker-registry test]# docker push 192.168.20.20:5000/icfw/tomcat:1.0

4、 上傳完成,我們可以查看一下掛載目錄是否有鏡像:

[root@docker-registry test]# ls /registry/

dockerDocker

5、 關(guān)于本地鏡像的查看:

[root@docker-registry test]# curl http://192.168.20.20:5000/v2/_catalog

{"repositories":["icfw/tomcat"]}

6、 看到有兩個(gè)鏡像,我們要獲取他的標(biāo)簽信息以便下載呢:

[root@docker-registry test]# curl http://192.168.20.20:5000/v2/icfw/tomcat/tags/list

{"name":"icfw/tomcat","tags":["1.0"]}

7、 然后我們直接下載鏡像:

[root@docker-registry test]# docker pull 192.168.20.20:5000/icfw/tomcat:1.0

6 使用Docker compose容器編排
Docker Compose是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具。使用Compose,你可以在一個(gè)文件中定義一個(gè)多容器應(yīng)用,然后使用一條命令來啟動(dòng)你的應(yīng)用,完成一切準(zhǔn)備工作。

通過compose構(gòu)建相關(guān)容器編排非常簡單,可以參考官方:

https://docs.docker.com/compose/gettingstarted/#step-4-build-and-run-your-app-with-compose

6.1 compose安裝:
[root@dev-app-server ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

[root@dev-app-server ~]# chmod +x /usr/local/bin/docker-compose

docker-compose version 1.23.2, build 1110ad01

docker-py version: 3.6.0

CPython version: 3.6.7

OpenSSL version: OpenSSL 1.1.0f 25 May 2017

相關(guān)語法:

build 構(gòu)建或重建服務(wù)

help 命令幫助

kill 殺掉容器

logs 顯示容器的輸出內(nèi)容

port 打印綁定的開放端口

ps 顯示容器

pull 拉取服務(wù)鏡像

restart 重啟服務(wù)

rm 刪除停止的容器

run 運(yùn)行一個(gè)一次性命令

scale 設(shè)置服務(wù)的容器數(shù)目

start 開啟服務(wù)

stop 停止服務(wù)

up 創(chuàng)建并啟動(dòng)容器

6.2 compose的構(gòu)建語法
docker compose構(gòu)建語法和相關(guān)格式非常簡單,與docker相關(guān)命令差不多,我們直接進(jìn)入實(shí)戰(zhàn)部分,構(gòu)建安全碼系統(tǒng)測試環(huán)境:

##image和build必須存在一個(gè),為了節(jié)約時(shí)間,我們沒有用dockerfile構(gòu)建一個(gè)鏡像,剩下的指令基本上和docker run一樣的所以這里不多介紹。

6.3 開始構(gòu)建和啟動(dòng)
1、配置文件

[root@dev-app-server vcs-project]# cat docker-compose.yml

version: "2"

services:

framework:

image:  192.168.20.20:5000/icfw/tomcat:1.0

ports:

  - 8080:8080

environment:

   ICFW_FRMEWORK_HOME: /opt/env

volumes:

  - /opt/vcs-project/framework:/opt/apache-tomcat-7.0.55/webapps

  - /opt/vcs-project/env/icfw-framework:/opt/env

  - /opt/vcs-project/icfwfiles:/opt/icfwfiles

vcs:

image:  192.168.20.20:5000/icfw/tomcat:1.0

ports:

  - 8081:8080

environment:

   VCS_HOME: /opt/env

volumes:

  - /opt/vcs-project/vcs:/opt/apache-tomcat-7.0.55/webapps

  - /opt/vcs-project/env/vcs-home:/opt/env

  - /opt/vcs-project/icfwfiles:/opt/icfwfiles

links:

  - framework 

2、創(chuàng)建并啟動(dòng)

[root@dev-app-server vcs-project]# docker-compose -f docker-compose.yml up -d

Creating vcs-project_framework_1 ... done

Creating vcs-project_vcs_1 ... done

3、刪除指定容器:先停止容器,再執(zhí)行刪除:

docker-compose -f docker-compose.yml stop vcs

docker-compose -f docker-compose.yml rm vcs ##即可。

6.4 查看日志
1、 查看啟動(dòng)日志

[root@dev-app-server vcs-project]# docker-compose -f docker-compose.yml logs

2、 查看相關(guān)狀態(tài):

[root@dev-app-server vcs-project]# docker-compose -f docker-compose.yml ps

     Name                        Command               State           Ports        

vcs-project_framework_1 /bin/sh -c supervisord -c ... Up 0.0.0.0:8080->8080/tcp

vcs-project_vcs_1 /bin/sh -c supervisord -c ... Up 0.0.0.0:8081->8080/tcp

6.5 訪問測試

1、映射web目錄已經(jīng)添加了framework-web.war,vcs-web.war了,可通過http://192.168.20.15:8080/frmamework-web訪問測試。

新聞名稱:DOCKER安裝及基本使用
瀏覽地址:http://bm7419.com/article18/jdgegp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、App開發(fā)、面包屑導(dǎo)航網(wǎng)站收錄、商城網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司