中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DOCKER安裝及基本使用

發布時間:2020-07-18 12:17:20 來源:網絡 閱讀:241 作者:wx5bcc50890840d 欄目:系統運維

1 DOCKER 基本結構

DOCKER安裝及基本使用

Docker客戶端:Docker是C/S的應用架構模型,一般客戶端和服務端都在同一個二進制文件中。所以通常我們都可以通過Docker命令來運行相關操作。

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

Docker daemon:Docker 的服務端,通常表示的包都是Docker Engine,接受用戶請求,并進行相關操作。

容器:相當于虛擬機的概念,但是簡化成一個相互隔離的操作系統,無需我們關系具體細節,我們像集裝箱一樣打包就用即可。

鏡像:容器的基礎,通過Unionfs文件系統特性,實現不同鏡像堆疊。是啟動容器的一個基礎。用Dockerfile可以方便定制。

Registry:存放鏡像的地方,通過Registry我們就可以實現容器鏡像的打包帶走。

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 (當容器存在的時候刪不掉,應該先刪除鏡像再刪除容器)

四、鏡像拉取和推送

Docker pull 即可

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

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

2.2 Docker 容器管理
一、創建容器:

docker create nginx(鏡像名)

二、查看運行容器:

[root@node3 ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

三、查看所有容器:

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

四、啟動容器

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

五、運行容器:

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

六、刪除容器:

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

七、進入容器:

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

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

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

注:默認文件可讀可寫,指定掛載權限可自行參考docker手冊。

3 DOCKER 快速安裝
3.1 軟件版本
操作系統:Centos 7.0

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

由于國內的源比較卡,所以我們推薦使用daocloud的方式,調用遠程腳本,安裝即可:

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

#為了快速拉取鏡像,還要daocloud.因為在國內通常拉取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

##實際上是相關配置寫入/etc/docker/daemon.json:指定去這個倉庫下,因為默認是去官方的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 客戶端遠程連接。

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

然后重啟docker:

systemctl restart docker

##查看docker狀態,docker 讀取的是哪個配置文件:

[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這個文件

三、測試docker是否啟動正常:

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

4 DOCKER 鏡像制作
4.1 DOCKER FILE 指令
DOCKER提倡使用Dockfile的方式來構建鏡像,Dockerfile是Docker的解釋型語言,通過提交Dockerfile來實現對鏡像的構建。

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

FROM指令:

FROM centos:centos7

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

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

MAINTAINER admin admin@icfw.com.cn

##鏡像構建作者的相關信息

RUN(執行相關的系統命令)

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

RUN yum install supervisor –y

CMD(系統啟動時候執行指令,但是會被第一條啟動所覆蓋)

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

CMD command param1 param2 在 /bin/sh 中執行,提供給需要交互的應用;

CMD ["param1","param2"] 提供給ENTRYPOINT的默認參數;

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

ENTRYPOINT(也是系統啟動執行命令)

格式:

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

ENTRYPOINT command param1 param2(shell中執行)。

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

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

CMD ["sleep", "10"]

##在啟動的時候等于就執行了,python /test.py sleep 10

##注意

當獨自使用時,如果你還使用了CMD命令且CMD是一個完整的可執行的命令,那么CMD指令和ENTRYPOINT會互相覆蓋只有最后一個CMD或者ENTRYPOINT有效。

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

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

##在編寫Docker的時候暴露容器的端口,但是只是在內部暴露,外部想映射還需要-p選項

VOLUME(指定掛載點))

VOLUME ["<mountpoint>"]

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

ENV(用于設置環境變量)

ENV <key> <value>

##構建鏡像和容器啟動時候都可以使用

ADD與COPY

ADD <src> <dest>

##兩個都是復制本機文件到鏡像里,區別是ADD如果文件是可識別的壓縮格式,則docker會幫忙解壓縮.

WORKDIR

WORKDIR /path/to/workdir

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

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

ONBUILD <Dockerfile關鍵字>

##ONBUILD 指定的命令在構建鏡像時并不執行,而是在它的子鏡像中執行。

USER(設置container容器的用戶)

User nginx

##容器執行時候指定的用戶,默認是root:

arg

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

##解釋:ARG指定了一個變量在docker build的時候使用,可以使用--build-arg <varname>=<value>來指定參數的值,不過如果構建的時候不指定就會報錯。

4.2 構建一個tomcat鏡像示例
一、創建目錄新建Dockerfile和相關包:

[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來管理進程:

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

[supervisord]

nodaemon=true

[program:tomcat]

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

4、開始構建:

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

5、運行:

[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 啟動并且掛載鏡像倉庫到本地磁盤
[root@docker-registry test]# docker run -d -p 5000:5000 --restart=always -v /registry:/var/lib/registry registry

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

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

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

2、 本地鏡像打個標簽然后上傳:

[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、 關于本地鏡像的查看:

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

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

6、 看到有兩個鏡像,我們要獲取他的標簽信息以便下載呢:

[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是一個用來定義和運行復雜應用的Docker工具。使用Compose,你可以在一個文件中定義一個多容器應用,然后使用一條命令來啟動你的應用,完成一切準備工作。

通過compose構建相關容器編排非常簡單,可以參考官方:

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

相關語法:

build 構建或重建服務

help 命令幫助

kill 殺掉容器

logs 顯示容器的輸出內容

port 打印綁定的開放端口

ps 顯示容器

pull 拉取服務鏡像

restart 重啟服務

rm 刪除停止的容器

run 運行一個一次性命令

scale 設置服務的容器數目

start 開啟服務

stop 停止服務

up 創建并啟動容器

6.2 compose的構建語法
docker compose構建語法和相關格式非常簡單,與docker相關命令差不多,我們直接進入實戰部分,構建安全碼系統測試環境:

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

6.3 開始構建和啟動
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、創建并啟動

[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、刪除指定容器:先停止容器,再執行刪除:

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

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

6.4 查看日志
1、 查看啟動日志

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

2、 查看相關狀態:

[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目錄已經添加了framework-web.war,vcs-web.war了,可通過http://192.168.20.15:8080/frmamework-web訪問測試。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

穆棱市| 昌江| 成安县| 罗田县| 丰县| 阿城市| 秦皇岛市| 万州区| 淮南市| 新平| 七台河市| 崇州市| 迭部县| 长宁区| 桃源县| 信宜市| 宜良县| 金堂县| 堆龙德庆县| 区。| 唐山市| 上高县| 延寿县| 勃利县| 东城区| 太原市| 荥经县| 罗平县| 肇源县| 平利县| 文山县| 怀宁县| 玉田县| 甘洛县| 呼伦贝尔市| 洞头县| 钟山县| 三江| 凭祥市| 华池县| 兰西县|