docker 的安裝應用與補充

docker 的安裝應用與補充

標籤(空格分隔): docker的部分php


  • 一:Docker概述html

  • 二:Docker安裝java

  • 三:鏡像管理node

  • 四:容器管理mysql

  • 五:管理應用程序數據linux

  • 六:容器網絡nginx

  • 七:Dockerfilec++

  • 八:企業級鏡像倉庫Harbor

一:Docker概述

1.1 Docker是什麼

1. 使用最普遍的開源容器引擎
2. 一種操做系統級的虛擬化技術
3. 依賴於Linux內核特性:Namespace(資源隔離)和Cgroups(資源限制)
4. 一個簡單的應用程序打包工具

1.2 Docker設計目標

1. 提供簡單的應用程序打包工具
2. 開發人員和運維人員職責邏輯分離
3. 多環境保持一致性

image_1e5jp05ms2471hiu1slr1qqp1vri9.png-1366.6kB

1.3 Docker基本組成

1. Docker Client:客戶端
2. Ddocker Daemon:守護進程
3. Docker Images:鏡像
4. Docker Container:容器
5. Docker Registry:鏡像倉庫

image_1e5jp2ah11nt21pv7kpl1h80qim.png-130.9kB


1.4 容器 VS 虛擬機

image_1e5jp346j19i818ps1vvk9heghf13.png-132.5kB

image_1e5jp3kep1hqh1invaj716gr19a31g.png-186.9kB

1.5 docker的應用場景

1. 應用程序打包和發佈
2. 應用程序隔離
3. 持續集成
4. 部署微服務
5. 快速搭建測試環境
6. 提供PaaS產品(平臺即服務)

二: Docker的安裝

2.1 Docker版本

1. 社區版(Community Edition,CE)
2. 企業版(Enterprise Edition,EE)

2.2 支持平臺

1. Linux(CentOS,Debian,Fedora,Oracle Linux,RHEL,SUSE和Ubuntu)
2. Mac
3. Windows

image_1e5jp9tu2cukrhmsv3gia1ltd1t.png-65.5kB


2.3 CentOS7.x安裝Docker

提供的官方網址
官方文檔:https://docs.docker.com

# 安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker軟件包源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安裝Docker CE
yum install -y docker-ce
# 啓動Docker服務並設置開機啓動
systemctl start docker
systemctl enable docker

image_1e5jpq58h1csj1pg51avr1hp12vc9.png-243.8kB

image_1e5jpqt5sdnvnacd1n14qcprim.png-260.3kB

image_1e5jprnjl11cs13ib1inrhrc1dle13.png-236.4kB


三: docker 的 鏡像管理

3.1 鏡像是什麼

鏡像是什麼?
1. 一個分層存儲的文件
2. 一個軟件的環境
3. 一個鏡像能夠建立N個容器
4. 一種標準化的交付
5. 一個不包含Linux內核而又精簡的Linux操做系統
鏡像不是一個單一的文件,而是有多層構成。咱們能夠經過docker history <ID/NAME> 查看鏡像中各層內容及大小,每層
對應着Dockerfile中的一條指令。Docker鏡像默認存儲在/var/lib/docker/\<storage-driver\>中。

鏡像從哪裏來?
Docker Hub是由Docker公司負責維護的公共註冊中心,包含大量的容器鏡像,Docker工具默認從這個公共鏡像庫下載鏡像。
地址:https://hub.docker.com/explore

配置鏡像加速器:https://www.daocloud.io/mirror

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

image_1e5jq0upo1dmj1i7p18qa178l1c2v1g.png-106.5kB


3.2 鏡像與容器聯繫

以下圖,容器實際上是在鏡像的最上面加了一層讀寫層,在運行容器裏文件改動時,
會先從鏡像裏要寫的文件複製到容器本身的文件系統中(讀寫層)。
若是容器刪除了,最上面的讀寫層也就刪除了,改動也就丟失了。因此不管多
少個容器共享一個鏡像,所作的寫操做都是從鏡像的文件系統中複製過來操做
的,並不會修改鏡像的源文件,這種方式提升磁盤利用率。
若想持久化這些改動,能夠經過docker commit 將容器保存成一個新鏡像。

image_1e5jq2s231apskcu1erd1ctn1f4v1t.png-573.2kB

3.3 管理鏡像經常使用命令

image_1e5jq3ql7f6r13f11kup1ilj12sv2a.png-329kB


docker info
列出當前的docker 的版本

image_1e5jq77ir1aa4140a5ab1juqdvl2n.png-152.4kB

去這裏 下載:
https://download.openvz.org/template/precreated/
cat centos-6-x86_64-minimal.tar.gz |docker import - centos:6.0 ## 建立鏡像
cat centos-7-x86_64-minimal.tar.gz |docker import - centos:7.0
cat ubuntu-16.04-x86_64.tar.gz |docker import - ubuntu:16.04

另外一個種方法:

docker pull nginx:1.15

docker history nignx:1.15

這個分層的下載的

image_1e5jqv2pbq3p4h41g1lo1h1rve9.png-191.9kB

image_1e5jr2b7bbp630r18ki43u1dmt9.png-139.4kB


建立一個容器:
docker run -itd --name nginx-test -p 8080:80 nignx:1.15

docker ps -l 

進入一個容器

docker exec -ti 1e9515c8c966 /bin/bash

image_1e5jr5unjkhn1g1p12s91phd18h7m.png-90.4kB

image_1e5jr86k0tcm1fov1eda1fgd1c8n13.png-134.3kB

docker commit 1e9515c8c966 nginx-test:v1  提交容器到本地倉庫

image_1e5jrre4a1vdh1jfp8pnp2dc652a.png-84.1kB

docker image nginx-test:v1 > nginx-test.tar  導出一個鏡像

image_1e5jrfsjq13b61d0f17qo1eao9gk1t.png-183.7kB


docker image rm nginx-test:v1 刪掉一個鏡像

image_1e5jru99k27gu3mjsn17g5183o2n.png-97.7kB

docker load -i nginx-test.tar 導入一個鏡像

image_1e5js0vjk1g0313l3lqaarn15ck34.png-113kB


docker tag nginx-test:v1 node04.flyfish/nginx/myapp:v1 給鏡像打個標籤方便提交到私有倉庫

docker images

image_1e5jsbovif9g1bga1msf18aig0g3h.png-105kB

四: 容器管理

4.1 建立容器經常使用選項

image_1e5jsk0br1590dm8onn7pk1esh3u.png-397.7kB

進入一個容器: 

docker pull httpd 
docker run -tid --name httpd-test -p 4040:80 httpd

docker ps -l

image_1e5jsurpi10pl1rff9o5s61fv95b.png-190.1kB


進入這個容器

docker ps -l

docker exec -ti a30f616852a1 /bin/bash

image_1e5jt0v6p1v7s59h1hl7kg4132v5o.png-57.4kB

image_1e5jt2hs111291m0qofu1ikn1e2465.png-105.5kB

docker run -tid --name centos7-test centos:7.0:v1 /bin/bash
docker ps -a

image_1e5jtealn1834186f9c0i9utnlm.png-36.6kB

image_1e5jtdnd018tpp231mi2div14mt9.png-71.6kB

image_1e5jthi0q1ief17f81ht211bqcu513.png-296.7kB


docker run -tid --name nginx1-test1 -p 6060:80 --restart always nginx:1.15
開機自啓動 容器 (默認是docker 啓動 容器是不啓動的)

image_1e5jukqtioal10vb2u11tpo1kto1g.png-120.9kB

image_1e5julqd613ih1dv2f5g1b54ncn1t.png-154.6kB


docker run -tid --name nginx2-test2 -p 7070:80 -e flyfish=zhangyy -h nginx-web --restart always nginx:1.15 

指定 容器的 hostname 名稱 與 制定 環境變量 並設置開機自啓動

image_1e5jv85nv1hum1i3os7o14dm1hdl2a.png-192.7kB

查看日誌

docker logs 8ea2c0ae169a -f

image_1e5jvfhkd14av1k332nmco9pn12n.png-252.4kB

image_1e5jvh9fi12791bemmst1gdmnul34.png-375.7kB


4.2 容器的資源限制

image_1e5jvl8erc7010f5uuoqkbchq3h.png-264.2kB

示例:
內存限額:
容許容器最多使用500M內存和100M的Swap,並禁用 OOM Killer:
docker run -d --name nginx03 --memory 500m --memory-swap 600M --oom-kill-disable nginx:1.15

docker stats f50b08998e87

image_1e5k0sanpaoh15v01l46peacq4m.png-233.9kB

image_1e5k17ribhe9d9vbi51jibub21t.png-66.2kB

CPU限額:
容許容器最多使用一個半的CPU:
docker run -d --name nginx04 --cpus="1.5" nginx:1.15

docker stats 79b51c9d4eee

image_1e5k0u39n1adsmui3ne15s62gt13.png-83kB

image_1e5k19rn31d2n18h71jmc5li19b02a.png-63.9kB

容許容器最多使用50%的CPU:
docker run -d --name nginx05 --cpus=".5" nginx:1.15

docker stats e70a483d0519

image_1e5k0v9gr1h6pgpt1i2u1nn23l91g.png-79.3kB

image_1e5k1bj2cku71dsglnc4v85cq2n.png-68kB

4.3 管理容器經常使用命令

image_1e5k1ggiv3fu1ofeskbtv2rku34.png-262.2kB

查看容器

docker container ls

docker ps -a

image_1e5k1jrj7d5010951aj01666fj13h.png-355.2kB


進入容器執行命令:

docker exec -ti e70a483d0519 /bin/bash

docker exec e70a483d0519 ls

image_1e5k1n61c1uh93fc1i1qbpe46q3u.png-107.1kB


提交容器:
docker commit e70a483d0519 nginx05:v1

docker images

image_1e5k1rhdt1u4o1m5a7uu187vdm34b.png-152.3kB


文件拷貝到容器中

docker cp nginx-test.tar e70a483d0519:/
docker exec e70a483d0519 ls

image_1e5k210at7dr4rpv1bq22g7j4o.png-80.1kB


docker logs -f 8ea2c0ae169a

image_1e5k24sht1e7jgtf8gkbpnn8255.png-242.9kB

查看容器的映射對外端口:

docker port 8ea2c0ae169a

image_1e5k26rit1bo016ua18qultdrdm5i.png-28.9kB

查看當前容器運行的主進程

docker top 8ea2c0ae169a

查看容器的是使用的資源 
docker stats 8ea2c0ae169a --no-stream

image_1e5k2btsfiic1nsd1trjiao1lv45v.png-57.9kB


刪除容器:

docker rm e70a483d0519

image_1e5k2gl4qvucc7aqh2ejv1ue46c.png-202.7kB


五:管理應用程序數據

5.1 將數據從宿主機掛載到容器中的三種方式

Docker提供三種方式將數據從宿主機掛載到容器中:

• volumes:Docker管理宿主機文件系統的一部分(/var/lib/docker/volumes)。保存數據的最佳方式。

• bind mounts:將宿主機上的任意位置的文件或者目錄掛載到容器中。

• tmpfs:掛載存儲在主機系統的內存中,而不會寫入主機的文件系統。若是不但願將數據持久存儲在任何位置,可使用tmpfs,同時避免寫入容器可寫層提升性能。

image_1e5k3bd19gb414u8gfciju12276p.png-50.9kB

5.2 Volume

管理卷:
# docker volume create nginx-vol
# docker volume ls
# docker volume inspect nginx-vol
用卷建立一個容器:
# docker run -d --name=nginx3-test3 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx:1.15

# docker run -d --name=nginx3-test3 -v nginx-vol:/usr/share/nginx/html nginx1.15
清理:
# docker stop nginx3-test3
# docker rm nginx3-test3
# docker volume rm nginx-vol

注意:
1. 若是沒有指定卷,自動建立。
2. 建議使用--mount,更通用。

image_1e5k3hjjd127n13vc1is31cig1dit76.png-108.4kB

image_1e5k3jrlg15mu1teo8lvqtl1jqk7j.png-42.7kB

image_1e5k3r9sp1sbfq35i0151ohos80.png-142.6kB

image_1e5k3thlfrbsklg1hdui6h19hk8d.png-152.6kB

image_1e5k3u9jv1s2cndhc4n12om6q08q.png-143.6kB

image_1e5k42dp6hdm1tb5q8019vgb3h97.png-65.8kB


5.3 Bind Mounts

用卷建立一個容器:
# docker run -d -it --name=nginx4-test4 --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx:1.15
# docker run -d -it --name=nginx4-test4 -v /app/wwwroot:/usr/share/nginx/html nginx:1.15
驗證綁定:
# docker inspect nginx4-test4
清理:
# docker stop nginx4-test4
# docker rm nginx4-test4

注意:
1. 若是源文件/目錄沒有存在,不會自動建立,會拋出一個錯誤。
2. 若是掛載目標在容器中非空目錄,則該目錄現有內容將被隱藏。

image_1e5k4hhvm1fgk185jud3i0167mae.png-281.3kB

image_1e5k4jf053u21nsj13fc1qonmsar.png-181.3kB

image_1e5k4k49n1efv1dh91bm8gjronfb8.png-166.6kB

image_1e5k4m2sg5vm1bqfenm42t11hebl.png-159.6kB


5.4 小結

Volume特色:
• 多個運行容器之間共享數據。
• 當容器中止或被移除時,該卷依然存在。
• 多個容器能夠同時掛載相同的卷。
• 當明確刪除卷時,卷纔會被刪除。
• 將容器的數據存儲在遠程主機或其餘存儲上
• 將數據從一臺Docker主機遷移到另外一臺時,先中止容器,而後備份卷的目錄(/var/lib/docker/volumes/)

---

Bind Mounts特色:
• 從主機共享配置文件到容器。默認狀況下,掛載主機/etc/resolv.conf到每一個容器,提供DNS解析。
• 在Docker主機上的開發環境和容器之間共享源代碼。例如,能夠將Maven target目錄掛載到容器中,每次在Docker主機
上構建Maven項目時,容器均可以訪問構建的項目包。
• 當Docker主機的文件或目錄結構保證與容器所需的綁定掛載一致時

六 docker 的網絡模式

6.1 網絡模式

• bridge
–net=bridge
默認網絡,Docker啓動後建立一個docker0網橋,默認建立的容器也是添加到這個網橋

image_1e5k5j4es1v901ogaq2s1116i89c2.png-152.3kB

image_1e5k5kq4s8eg1l7ui6u113bf06cf.png-74.8kB

• host
–net=host
容器不會得到一個獨立的network namespace,而是與宿主機共用一個。這就意味着容器不會有本身的網卡信息,而是使用宿主機的。容器除了網絡,其餘都是隔離的。
docker run -tid --net=host busybox
docker exec -ti 59a38da6c947 sh

與 宿主機共享一個網絡

image_1e5k5v1jeh271phl1gfr10cs1l6jcs.png-201.4kB


• none
–net=none
獲取獨立的network namespace,但不爲容器進行任何網絡配置,須要咱們手動配置。

image_1e5k62elflmi73r1tls1eoa194qd9.png-157.5kB

• container
–net=container:Name/ID
與指定的容器使用同一個network namespace,具備一樣的網絡配置信息,兩個容器除了網絡,其餘都仍是隔離的。

docker run -tid --net=container:nginx04 busybox  

docker exec -ti 4d141b2cb971 /bin/bash

docker inspect 79b51c9d4eee

和nginx04 公用一個IP地址

image_1e5k6fuce11g41k81vtp1trb1usae6.png-213.5kB

image_1e5k6gh25vrv1e411tnf19rj1ru6ej.png-52kB

image_1e5k6h3l7evg11937flf7s0f0.png-70.1kB

• 自定義網絡
與默認的bridge原理同樣,但自定義網絡具有內部DNS發現,能夠經過容器名或者主機名容器之間網絡通訊。

docker network create test-nt
docker run -ti --net=test-nt --name bs11 busybox
在開一個終端:
docker run -ti --net=test-nt --name bs12 busybox

image_1e5k7fnq32v0vosiacqcvdn9m.png-157.2kB

image_1e5k7gggqh1u1eip1gbhvi01t5n13.png-136.8kB

image_1e5k7gt0etrn1vn1sfol8s17ug1g.png-62.5kB


6.3 容器網絡訪問原理

image_1e5k7jpa7mode881ijsfr6mc81t.png-59.8kB

image_1e5k7kdr4kovd661pvh1p3vrme2a.png-724.2kB


七:Dockerfile

7.1 Dockerfile格式

vim test.yaml 
---
FROM centos7.0:v1
MAINTAINER flyfish
RUN yum install gcc -y
COPY run.sh /usr/bin
EXPOSE 80
CMD [「run.sh」]
---

7.2 Dockerfile指令

image_1e5kil7basc2161d1k4f9tt1ukm2n.png-335.8kB

Build鏡像
----
Usage: docker build [OPTIONS] PATH | URL | - [flags]
Options:
-t, --tag list # 鏡像名稱
-f, --file string # 指定Dockerfile文件位置
# docker build .
# docker build -t shykes/myapp .
# docker build -t shykes/myapp -f /path/Dockerfile /path
# docker build -t shykes/myapp http://www.example.com/Dockerfile

示例: 

touch index.html 

echo 11111 > index.html

vim Dockerfile 
---
FROM centos7.0:v1
MAINTAINER flyfish
RUN yum install -y httpd
COPY index.html /var/www/html
ENV HTTP_V=2.0
EXPOSE 80
WORKDIR /tmp
CMD ["httpd","-D","FOREGROUND"]
---

docker build -t httpd:v1 -f Dockerfile .

docker images

image_1e5kkm37r1k251i8riqk13bbo919.png-246.5kB

image_1e5kkmivc1cui1nd21vs114mk16ugm.png-224.3kB

image_1e5kkn619nt5s4okgdd7tjtm13.png-218.3kB

image_1e5kko1nchho15d915vf1iuttpg1g.png-177.3kB


構建一個nginx 鏡像:

mkdir nginx

cd nginx

vim Docker-nginx
----
FROM centos:7
MAINTAINER flyfish 
RUN yum install -y gcc gcc-c++ make \
    openssl-devel pcre-devel gd-devel \
    iproute net-tools telnet wget curl && \
    yum clean all && \
    rm -rf /var/cache/yum/*
RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && \
    tar zxf nginx-1.15.5.tar.gz && \
    cd nginx-1.15.5 && \
    ./configure --prefix=/usr/local/nginx \
    --with-http_ssl_module \
    --with-http_stub_status_module && \
    make -j 4 && make install && \
    rm -rf /usr/local/nginx/html/* && \
    echo "ok" >> /usr/local/nginx/html/status.html && \
    cd / && rm -rf nginx-1.15.5* && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/nginx/sbin
#COPY nginx.conf /usr/local/nginx/conf/nginx.conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
----

docker build -t nginx:v1 -f Dockerfile .
docker images

image_1e5kmmrvt1sh51dgl110i1nekrbc1t.png-114.1kB

image_1e5kmnrb81l9f1iba2501b19u3b2a.png-174.1kB

測試:

docker run -tid --name nginx1.15-test1 nginx:v1 /bin/bash

image_1e5knm07ueneqrf14v86pu1kak2n.png-82.8kB

image_1e5knmmg6rto1klm1cqt2s107134.png-126.6kB

image_1e5knnak812rjobs1sd43dnc8t3h.png-105.8kB


構建一個php的鏡像

mkdir php 
mv Dockerfile-php php-fpm.conf php.ini php

---
FROM centos:7
MAINTAINER flyfish
RUN yum install epel-release -y && \
    yum install -y gcc gcc-c++ make gd-devel libxml2-devel \
    libcurl-devel libjpeg-devel libpng-devel openssl-devel \
    libmcrypt-devel libxslt-devel libtidy-devel autoconf \
    iproute net-tools telnet wget curl && \
    yum clean all && \
    rm -rf /var/cache/yum/*

RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && \
    tar zxf php-5.6.36.tar.gz && \
    cd php-5.6.36 && \
    ./configure --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --enable-fpm --enable-opcache \
    --with-mysql --with-mysqli --with-pdo-mysql \
    --with-openssl --with-zlib --with-curl --with-gd \
    --with-jpeg-dir --with-png-dir --with-freetype-dir \
    --enable-mbstring --with-mcrypt --enable-hash && \
    make -j 4 && make install && \
    cp php.ini-production /usr/local/php/etc/php.ini && \
    cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && \
    sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf && \
    mkdir /usr/local/php/log && \
    cd / && rm -rf php* && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/php/sbin
COPY php.ini /usr/local/php/etc/
COPY php-fpm.conf /usr/local/php/etc/
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["php-fpm"]

----

docker build -t php:v1 -f Dockerfile .

docker images |grep php

image_1e5kqav2f1es81i8e1cg8b9eblu3u.png-93.8kB

image_1e5kqbm9ti1gjm647g1v6br2f4b.png-41kB


7.3 快速部署LNMP網站平臺

image_1e5kqeqc41shk196ll17hk81n044o.png-62.8kB

一、自定義網絡
docker network create lnmp
二、建立Mysql容器
docker run -d \
--name lnmp_mysql \
--net lnmp \
--mount src=mysql-vol,dst=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress mysql:5.7 --character-set-server=utf8
三、建立PHP容器
docker run -d --name lnmp_php --net lnmp --mount src=wwwroot,dst=/wwwroot php:v1
四、建立Nginx容器
docker run -d --name lnmp_nginx --net lnmp -p 88:80 \
--mount src=wwwroot,dst=/wwwroot nginx:v1
五、以wordpress博客爲例
https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

image_1e5kqjepm1jrvg8o1gb53tsnvs55.png-49.9kB

image_1e5kqjs9q153b4g31e0u1725v5r5i.png-240kB

image_1e5kr2u6p9i1167t1t9r1set1p6q5v.png-93.8kB

image_1e5kro7jr1lq5ua82191m7r9k66c.png-74.7kB

cd /var/lib/docker/volume/wwwroot/_data/

vim test.php
---
<?php phpinfo();?>

---

image_1e5krth9bnki1h5c1qip11671dvq6p.png-449.9kB

wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
tar -zxvf wordpress-4.9.4-zh_CN.tar.gz

image_1e5ks32nr1v4b1tp51mue2k2j2k9.png-39.8kB

http://ip:88/wordpress/

image_1e5ks41ec1fp0esu1jp1rj43pdm.png-367kB

image_1e5ksampvoco19meoeb1d8u8eb13.png-279kB

image_1e5ksbco7vn919nfdss1enloki1g.png-162.9kB

image_1e5ksgn0er2g1fgqbr6th11l9n37.png-347kB

image_1e5ksmnbp8021bf0hbr1sot1fg03k.png-142.5kB

image_1e5m0kgjiaim1nn7gqkqep1ou39.png-1144kB

7.4 構建一個tomcat 項目

FROM centos:7
MAINTAINER flyfish

ENV VERSION=8.5.54

RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \
    yum clean all && \
    rm -rf /var/cache/yum/*

RUN wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \
#RUN wget http://192.168.31.211/apache-tomcat-${VERSION}.tar.gz && \
    tar zxf apache-tomcat-${VERSION}.tar.gz && \
    mv apache-tomcat-${VERSION} /usr/local/tomcat && \
    rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \
    mkdir /usr/local/tomcat/webapps/test && \
    echo "ok" > /usr/local/tomcat/webapps/test/status.html && \
    sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/tomcat/bin

WORKDIR /usr/local/tomcat

EXPOSE 8080
CMD ["catalina.sh", "run"]

image_1e5m2oa887d2hndjvs181p113u16.png-155.8kB

image_1e5m2p5dbkpk6ulija1v9j66g1j.png-139kB


基於鏡像 tomcat:v1 鏡像 構建一個jenkins 部署 鏡像
vim Dockerfile-jenkis
---
FROM tomcat:v1 
COPY jenkins.war /usr/local/tomcat/webapps/ROOT.war
---

docker build -t tomcat-jenkins:v1 -f Dockerfile-jenkins .

image_1e5m3al1j1ieq15eo1s651gic1jai2d.png-37.4kB

使用tomcat-jenkins:v1 構建一個jenkins的項目

docker run -tid --name jenkins-test -p 8080:8080 --restart always -h jenkins tomcat-jenkins:v1

image_1e5m3cf27bph1qpnrob1ubf1r5b2q.png-88.8kB

image_1e5m36ct910s31nhj140o1drh1o1h20.png-194.4kB

image_1e5m3lbfl12lu3sc72ka2vmkt37.png-282.7kB


密碼:
docker exec -ti e0edd5f81092 cat /root/.jenkins/secrets/initialAdminPassword
---
67f0ce7c72dd4fca83f8f6d047fb46de
---

下面安裝就能夠了

image_1e5m3o3i61gd69ff1mvo19bc7qq3k.png-357.4kB

八 構建企業倉庫vmware harbor

8.1 Harbor概述

Habor是由VMWare公司開源的容器鏡像倉庫。事實上,Habor是在Docker Registry上進行了相應的
企業級擴展,從而得到了更加普遍的應用,這些新的企業級特性包括:管理用戶界面,基於角色的訪
問控制 ,AD/LDAP集成以及審計日誌等,足以知足基本企業需求。

官方地址:https://vmware.github.io/harbor/cn/

image_1e5m417661reqd5612pi12fnfmr41.png-226.2kB

8.2 Harbor安裝有3種方式:

• 在線安裝:從Docker Hub下載Harbor相關鏡像,所以安裝軟件包很是小
• 離線安裝:安裝包包含部署的相關鏡像,所以安裝包比較大
• OVA安裝程序:當用戶具備vCenter環境時,使用此安裝程序,在部署OVA後啓動Harbor

8.3 安裝 vmware harbor

8.3.1 安裝docker-compose

在node06.flyfish 主機上面部署

首先要安裝docker 

而後 安裝 安裝docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

image_1e5m4dp8ncsbbsc1h2m1rg81bbi4e.png-132.6kB

image_1e5m4qv60vqd8t0ce614701l2u62.png-140.1kB

# tar zxvf harbor-offline-installer-v1.5.1.tgz
# cd harbor
# vi harbor.cfg
hostname = 192.168.100.16
ui_url_protocol = http
harbor_admin_password = 12345
# ./prepare
# ./install.sh

image_1e5m4oo311h7512vvnhbnnunoc5l.png-121kB

image_1e5m4n83tvf319rk1jjpgjt1u434r.png-111.9kB

image_1e5m4nso2st01bsf1aa11c1p1grr58.png-86.4kB

image_1e5m4rtejbfa1i731dko10o228o6f.png-140.9kB

image_1e5m5h48t1tkg1dv51phqgfgun56s.png-49.4kB

image_1e5m5jcv31fij1v2r11bm1oh0l7579.png-91.8kB

image_1e5m5ntt7nipkgf1f6ku0p195h8g.png-104.1kB

image_1e5m5k5qc1e5kvd1c5714mm1j4c7m.png-158.8kB

默認用戶名:admin 

密碼: 12345

image_1e5m5lfalp4f19km1ukb7fr3pl83.png-220.7kB

建立用戶 flyfish 
密碼:Flyfish123

image_1e5m5ticd14u7c041oiv14jlakc8t.png-129.5kB

libary 添加成員 flyfish

image_1e5m61ajuaeoq0p17201kh18qa9a.png-157.8kB

image_1e5m62cv4jc41a191kqu1uok1mpb9n.png-110.1kB


8.3.2 配置http鏡像倉庫可信任

# vi /etc/docker/daemon.json
{"insecure-registries":["192.168.100.16"]}
# systemctl restart docker

image_1e5m69tc1p3m11cm1j45ov528oa4.png-53.5kB

image_1e5m6clhr61eedaidj1b671eu8au.png-123.4kB

登陸鏡像倉庫:
docker login http://192.168.100.16
用戶名:flyfish
密碼:Flyfish123

image_1e5m6c6k1187vk35ldgjhc1djqah.png-72.5kB

爲鏡像打一個tag
默認鏡像的提交模式是:
docker tag SOURCE_IMAGE[:TAG] 192.168.100.16/library/IMAGE[:TAG]
提交模式:
docker push 192.168.100.16/library/IMAGE[:TAG]

----
將tomcat:v1 nginx:v1 php:v1 tomcat-jenkins:v1 的 鏡像提交到倉庫中:

docker tag tomcat:v1 192.168.100.16/library/tomcat:v1
docker tag nginx:v1 192.168.100.16/library/nginx:v1
docker tag php:v1 192.168.100.16/library/php:v1
docker tag tomcat-jenkins:v1 192.168.100.16/library/tomcat-jenkins:v1
-----
上傳鏡像

docker push 192.168.100.16/library/tomcat:v1

docker push 192.168.100.16/library/nginx:v1

docker push 192.168.100.16/library/php:v1

docker push 192.168.100.16/library/tomcat-jenkins:v1

image_1e5m6si7bp05vr118svceb51ubo.png-58.8kB

image_1e5m6nfh84qa179f1bvd1ls1li2bb.png-35.8kB

image_1e5m6un8fb2gasc2ip1l1o1ialc5.png-121.2kB

image_1e5m6v4u11lauskr8dr1fv2i33ci.png-156.8kB

image_1e5m9m7p31qamef61861n41j9tcv.png-82.7kB

相關文章
相關標籤/搜索