[关闭]
@zhangyy 2020-09-21T09:20:17.000000Z 字数 11551 阅读 145

docker 的安装应用与补充

docker的部分


  • 一:Docker概述

  • 二:Docker安装

  • 三:镜像管理

  • 四:容器管理

  • 五:管理应用程序数据

  • 六:容器网络

  • 七:Dockerfile

  • 八:企业级镜像仓库Harbor


一:Docker概述

1.1 Docker是什么

  1. 1. 使用最广泛的开源容器引擎
  2. 2. 一种操作系统级的虚拟化技术
  3. 3. 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
  4. 4. 一个简单的应用程序打包工具

1.2 Docker设计目标

  1. 1. 提供简单的应用程序打包工具
  2. 2. 开发人员和运维人员职责逻辑分离
  3. 3. 多环境保持一致性

image_1e5jp05ms2471hiu1slr1qqp1vri9.png-1366.6kB

1.3 Docker基本组成

  1. 1. Docker Client:客户端
  2. 2. Ddocker Daemon:守护进程
  3. 3. Docker Images:镜像
  4. 4. Docker Container:容器
  5. 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. 1. 应用程序打包和发布
  2. 2. 应用程序隔离
  3. 3. 持续集成
  4. 4. 部署微服务
  5. 5. 快速搭建测试环境
  6. 6. 提供PaaS产品(平台即服务)

二: Docker的安装

2.1 Docker版本

  1. 1. 社区版(Community EditionCE
  2. 2. 企业版(Enterprise EditionEE

2.2 支持平台

  1. 1. LinuxCentOS,Debian,Fedora,Oracle Linux,RHEL,SUSEUbuntu
  2. 2. Mac
  3. 3. Windows

image_1e5jp9tu2cukrhmsv3gia1ltd1t.png-65.5kB


2.3 CentOS7.x安装Docker

  1. 提供的官方网址
  2. 官方文档:https://docs.docker.com
  3. # 安装依赖包
  4. yum install -y yum-utils device-mapper-persistent-data lvm2
  5. # 添加Docker软件包源
  6. yum-config-manager \
  7. --add-repo \
  8. http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  9. # 安装Docker CE
  10. yum install -y docker-ce
  11. # 启动Docker服务并设置开机启动
  12. systemctl start docker
  13. systemctl enable docker

image_1e5jpq58h1csj1pg51avr1hp12vc9.png-243.8kB

image_1e5jpqt5sdnvnacd1n14qcprim.png-260.3kB

image_1e5jprnjl11cs13ib1inrhrc1dle13.png-236.4kB


三: docker 的 镜像管理

3.1 镜像是什么

  1. 镜像是什么?
  2. 1. 一个分层存储的文件
  3. 2. 一个软件的环境
  4. 3. 一个镜像可以创建N个容器
  5. 4. 一种标准化的交付
  6. 5. 一个不包含Linux内核而又精简的Linux操作系统
  7. 镜像不是一个单一的文件,而是有多层构成。我们可以通过docker history <ID/NAME> 查看镜像中各层内容及大小,每层
  8. 对应着Dockerfile中的一条指令。Docker镜像默认存储在/var/lib/docker/\<storage-driver\>中。

  1. 镜像从哪里来?
  2. Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。
  3. 地址:https://hub.docker.com/explore
  4. 配置镜像加速器:https://www.daocloud.io/mirror
  5. curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

image_1e5jq0upo1dmj1i7p18qa178l1c2v1g.png-106.5kB


3.2 镜像与容器联系

  1. 如下图,容器其实是在镜像的最上面加了一层读写层,在运行容器里文件改动时,
  2. 会先从镜像里要写的文件复制到容器自己的文件系统中(读写层)。
  3. 如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。所以无论多
  4. 少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作
  5. 的,并不会修改镜像的源文件,这种方式提高磁盘利用率。
  6. 若想持久化这些改动,可以通过docker commit 将容器保存成一个新镜像。

image_1e5jq2s231apskcu1erd1ctn1f4v1t.png-573.2kB

3.3 管理镜像常用命令

image_1e5jq3ql7f6r13f11kup1ilj12sv2a.png-329kB


  1. docker info
  2. 列出当前的docker 的版本

image_1e5jq77ir1aa4140a5ab1juqdvl2n.png-152.4kB

  1. 去这里 下载:
  2. https://download.openvz.org/template/precreated/
  3. cat centos-6-x86_64-minimal.tar.gz |docker import - centos:6.0 ## 创建镜像
  4. cat centos-7-x86_64-minimal.tar.gz |docker import - centos:7.0
  5. cat ubuntu-16.04-x86_64.tar.gz |docker import - ubuntu:16.04
  6. 另一个种方法:
  7. docker pull nginx:1.15
  8. docker history nignx:1.15
  9. 这个分层的下载的

image_1e5jqv2pbq3p4h41g1lo1h1rve9.png-191.9kB

image_1e5jr2b7bbp630r18ki43u1dmt9.png-139.4kB


  1. 创建一个容器:
  2. docker run -itd --name nginx-test -p 8080:80 nignx:1.15
  3. docker ps -l
  4. 进入一个容器
  5. docker exec -ti 1e9515c8c966 /bin/bash

image_1e5jr5unjkhn1g1p12s91phd18h7m.png-90.4kB

image_1e5jr86k0tcm1fov1eda1fgd1c8n13.png-134.3kB

  1. docker commit 1e9515c8c966 nginx-test:v1 提交容器到本地仓库

image_1e5jrre4a1vdh1jfp8pnp2dc652a.png-84.1kB

  1. docker image nginx-test:v1 > nginx-test.tar 导出一个镜像

image_1e5jrfsjq13b61d0f17qo1eao9gk1t.png-183.7kB


  1. docker image rm nginx-test:v1 删掉一个镜像

image_1e5jru99k27gu3mjsn17g5183o2n.png-97.7kB

  1. docker load -i nginx-test.tar 导入一个镜像

image_1e5js0vjk1g0313l3lqaarn15ck34.png-113kB


  1. docker tag nginx-test:v1 node04.flyfish/nginx/myapp:v1 给镜像打个标签方便提交到私有仓库
  2. docker images

image_1e5jsbovif9g1bga1msf18aig0g3h.png-105kB

四: 容器管理

4.1 创建容器常用选项

image_1e5jsk0br1590dm8onn7pk1esh3u.png-397.7kB

  1. 进入一个容器:
  2. docker pull httpd
  3. docker run -tid --name httpd-test -p 4040:80 httpd
  4. docker ps -l

image_1e5jsurpi10pl1rff9o5s61fv95b.png-190.1kB


  1. 进入这个容器
  2. docker ps -l
  3. docker exec -ti a30f616852a1 /bin/bash

image_1e5jt0v6p1v7s59h1hl7kg4132v5o.png-57.4kB

image_1e5jt2hs111291m0qofu1ikn1e2465.png-105.5kB

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

image_1e5jtealn1834186f9c0i9utnlm.png-36.6kB

image_1e5jtdnd018tpp231mi2div14mt9.png-71.6kB

image_1e5jthi0q1ief17f81ht211bqcu513.png-296.7kB


  1. docker run -tid --name nginx1-test1 -p 6060:80 --restart always nginx:1.15
  2. 开机自启动 容器 (默认是docker 启动 容器是不启动的)

image_1e5jukqtioal10vb2u11tpo1kto1g.png-120.9kB

image_1e5julqd613ih1dv2f5g1b54ncn1t.png-154.6kB


  1. docker run -tid --name nginx2-test2 -p 7070:80 -e flyfish=zhangyy -h nginx-web --restart always nginx:1.15
  2. 指定 容器的 hostname 名称 制定 环境变量 并设置开机自启动

image_1e5jv85nv1hum1i3os7o14dm1hdl2a.png-192.7kB

  1. 查看日志
  2. docker logs 8ea2c0ae169a -f

image_1e5jvfhkd14av1k332nmco9pn12n.png-252.4kB

image_1e5jvh9fi12791bemmst1gdmnul34.png-375.7kB


4.2 容器的资源限制

image_1e5jvl8erc7010f5uuoqkbchq3h.png-264.2kB

  1. 示例:
  2. 内存限额:
  3. 允许容器最多使用500M内存和100MSwap,并禁用 OOM Killer
  4. docker run -d --name nginx03 --memory 500m --memory-swap 600M --oom-kill-disable nginx:1.15
  5. docker stats f50b08998e87

image_1e5k0sanpaoh15v01l46peacq4m.png-233.9kB

image_1e5k17ribhe9d9vbi51jibub21t.png-66.2kB

  1. CPU限额:
  2. 允许容器最多使用一个半的CPU
  3. docker run -d --name nginx04 --cpus="1.5" nginx:1.15
  4. docker stats 79b51c9d4eee

image_1e5k0u39n1adsmui3ne15s62gt13.png-83kB

image_1e5k19rn31d2n18h71jmc5li19b02a.png-63.9kB

  1. 允许容器最多使用50%的CPU
  2. docker run -d --name nginx05 --cpus=".5" nginx:1.15
  3. docker stats e70a483d0519

image_1e5k0v9gr1h6pgpt1i2u1nn23l91g.png-79.3kB

image_1e5k1bj2cku71dsglnc4v85cq2n.png-68kB

4.3 管理容器常用命令

image_1e5k1ggiv3fu1ofeskbtv2rku34.png-262.2kB

  1. 查看容器
  2. docker container ls
  3. docker ps -a

image_1e5k1jrj7d5010951aj01666fj13h.png-355.2kB


  1. 进入容器执行命令:
  2. docker exec -ti e70a483d0519 /bin/bash
  3. docker exec e70a483d0519 ls

image_1e5k1n61c1uh93fc1i1qbpe46q3u.png-107.1kB


  1. 提交容器:
  2. docker commit e70a483d0519 nginx05:v1
  3. docker images

image_1e5k1rhdt1u4o1m5a7uu187vdm34b.png-152.3kB


  1. 文件拷贝到容器中
  2. docker cp nginx-test.tar e70a483d0519:/
  3. docker exec e70a483d0519 ls

image_1e5k210at7dr4rpv1bq22g7j4o.png-80.1kB


  1. docker logs -f 8ea2c0ae169a

image_1e5k24sht1e7jgtf8gkbpnn8255.png-242.9kB

  1. 查看容器的映射对外端口:
  2. docker port 8ea2c0ae169a

image_1e5k26rit1bo016ua18qultdrdm5i.png-28.9kB

  1. 查看当前容器运行的主进程
  2. docker top 8ea2c0ae169a

  1. 查看容器的是使用的资源
  2. docker stats 8ea2c0ae169a --no-stream

image_1e5k2btsfiic1nsd1trjiao1lv45v.png-57.9kB


  1. 删除容器:
  2. docker rm e70a483d0519

image_1e5k2gl4qvucc7aqh2ejv1ue46c.png-202.7kB


五:管理应用程序数据

5.1 将数据从宿主机挂载到容器中的三种方式

  1. Docker提供三种方式将数据从宿主机挂载到容器中:
  2. volumesDocker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。
  3. bind mounts:将宿主机上的任意位置的文件或者目录挂载到容器中。
  4. tmpfs:挂载存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久存储在任何位置,可以使用tmpfs,同时避免写入容器可写层提高性能。

image_1e5k3bd19gb414u8gfciju12276p.png-50.9kB

5.2 Volume

  1. 管理卷:
  2. # docker volume create nginx-vol
  3. # docker volume ls
  4. # docker volume inspect nginx-vol
  5. 用卷创建一个容器:
  6. # docker run -d --name=nginx3-test3 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx:1.15
  7. # docker run -d --name=nginx3-test3 -v nginx-vol:/usr/share/nginx/html nginx1.15
  8. 清理:
  9. # docker stop nginx3-test3
  10. # docker rm nginx3-test3
  11. # docker volume rm nginx-vol
  12. 注意:
  13. 1. 如果没有指定卷,自动创建。
  14. 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

  1. 用卷创建一个容器:
  2. # docker run -d -it --name=nginx4-test4 --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx:1.15
  3. # docker run -d -it --name=nginx4-test4 -v /app/wwwroot:/usr/share/nginx/html nginx:1.15
  4. 验证绑定:
  5. # docker inspect nginx4-test4
  6. 清理:
  7. # docker stop nginx4-test4
  8. # docker rm nginx4-test4
  9. 注意:
  10. 1. 如果源文件/目录没有存在,不会自动创建,会抛出一个错误。
  11. 2. 如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏。

image_1e5k4hhvm1fgk185jud3i0167mae.png-281.3kB

image_1e5k4jf053u21nsj13fc1qonmsar.png-181.3kB

image_1e5k4k49n1efv1dh91bm8gjronfb8.png-166.6kB

image_1e5k4m2sg5vm1bqfenm42t11hebl.png-159.6kB


5.4 小结

  1. Volume特点:
  2. 多个运行容器之间共享数据。
  3. 当容器停止或被移除时,该卷依然存在。
  4. 多个容器可以同时挂载相同的卷。
  5. 当明确删除卷时,卷才会被删除。
  6. 将容器的数据存储在远程主机或其他存储上
  7. 将数据从一台Docker主机迁移到另一台时,先停止容器,然后备份卷的目录(/var/lib/docker/volumes/)
  8. ---
  9. Bind Mounts特点:
  10. 从主机共享配置文件到容器。默认情况下,挂载主机/etc/resolv.conf到每个容器,提供DNS解析。
  11. Docker主机上的开发环境和容器之间共享源代码。例如,可以将Maven target目录挂载到容器中,每次在Docker主机
  12. 上构建Maven项目时,容器都可以访问构建的项目包。
  13. Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时

六 docker 的网络模式

6.1 网络模式

  1. bridge
  2. net=bridge
  3. 默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥

image_1e5k5j4es1v901ogaq2s1116i89c2.png-152.3kB

image_1e5k5kq4s8eg1l7ui6u113bf06cf.png-74.8kB

  1. host
  2. net=host
  3. 容器不会获得一个独立的network namespace,而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息,而是使用宿主机的。容器除了网络,其他都是隔离的。
  1. docker run -tid --net=host busybox
  2. docker exec -ti 59a38da6c947 sh
  3. 宿主机共享一个网络

image_1e5k5v1jeh271phl1gfr10cs1l6jcs.png-201.4kB


  1. none
  2. net=none
  3. 获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置。

image_1e5k62elflmi73r1tls1eoa194qd9.png-157.5kB

  1. container
  2. net=container:Name/ID
  3. 与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的。

  1. docker run -tid --net=container:nginx04 busybox
  2. docker exec -ti 4d141b2cb971 /bin/bash
  3. docker inspect 79b51c9d4eee
  4. nginx04 公用一个IP地址

image_1e5k6fuce11g41k81vtp1trb1usae6.png-213.5kB

image_1e5k6gh25vrv1e411tnf19rj1ru6ej.png-52kB

image_1e5k6h3l7evg11937flf7s0f0.png-70.1kB

  1. 自定义网络
  2. 与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信。

  1. docker network create test-nt
  2. docker run -ti --net=test-nt --name bs11 busybox
  3. 在开一个终端:
  4. 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格式

  1. vim test.yaml
  2. ---
  3. FROM centos7.0:v1
  4. MAINTAINER flyfish
  5. RUN yum install gcc -y
  6. COPY run.sh /usr/bin
  7. EXPOSE 80
  8. CMD [“run.sh”]
  9. ---

7.2 Dockerfile指令

image_1e5kil7basc2161d1k4f9tt1ukm2n.png-335.8kB

  1. Build镜像
  2. ----
  3. Usage: docker build [OPTIONS] PATH | URL | - [flags]
  4. Options:
  5. -t, --tag list # 镜像名称
  6. -f, --file string # 指定Dockerfile文件位置
  7. # docker build .
  8. # docker build -t shykes/myapp .
  9. # docker build -t shykes/myapp -f /path/Dockerfile /path
  10. # docker build -t shykes/myapp http://www.example.com/Dockerfile

  1. 示例:
  2. touch index.html
  3. echo 11111 > index.html
  4. vim Dockerfile
  5. ---
  6. FROM centos7.0:v1
  7. MAINTAINER flyfish
  8. RUN yum install -y httpd
  9. COPY index.html /var/www/html
  10. ENV HTTP_V=2.0
  11. EXPOSE 80
  12. WORKDIR /tmp
  13. CMD ["httpd","-D","FOREGROUND"]
  14. ---
  15. docker build -t httpd:v1 -f Dockerfile .
  16. docker images

image_1e5kkm37r1k251i8riqk13bbo919.png-246.5kB

image_1e5kkmivc1cui1nd21vs114mk16ugm.png-224.3kB

image_1e5kkn619nt5s4okgdd7tjtm13.png-218.3kB

image_1e5kko1nchho15d915vf1iuttpg1g.png-177.3kB


  1. 构建一个nginx 镜像:
  2. mkdir nginx
  3. cd nginx
  4. vim Docker-nginx
  5. ----
  6. FROM centos:7
  7. MAINTAINER flyfish
  8. RUN yum install -y gcc gcc-c++ make \
  9. openssl-devel pcre-devel gd-devel \
  10. iproute net-tools telnet wget curl && \
  11. yum clean all && \
  12. rm -rf /var/cache/yum/*
  13. RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && \
  14. tar zxf nginx-1.15.5.tar.gz && \
  15. cd nginx-1.15.5 && \
  16. ./configure --prefix=/usr/local/nginx \
  17. --with-http_ssl_module \
  18. --with-http_stub_status_module && \
  19. make -j 4 && make install && \
  20. rm -rf /usr/local/nginx/html/* && \
  21. echo "ok" >> /usr/local/nginx/html/status.html && \
  22. cd / && rm -rf nginx-1.15.5* && \
  23. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  24. ENV PATH $PATH:/usr/local/nginx/sbin
  25. #COPY nginx.conf /usr/local/nginx/conf/nginx.conf
  26. WORKDIR /usr/local/nginx
  27. EXPOSE 80
  28. CMD ["nginx", "-g", "daemon off;"]
  29. ----
  30. docker build -t nginx:v1 -f Dockerfile .
  31. docker images

image_1e5kmmrvt1sh51dgl110i1nekrbc1t.png-114.1kB

image_1e5kmnrb81l9f1iba2501b19u3b2a.png-174.1kB

  1. 测试:
  2. 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


  1. 构建一个php的镜像
  2. mkdir php
  3. mv Dockerfile-php php-fpm.conf php.ini php
  4. ---
  5. FROM centos:7
  6. MAINTAINER flyfish
  7. RUN yum install epel-release -y && \
  8. yum install -y gcc gcc-c++ make gd-devel libxml2-devel \
  9. libcurl-devel libjpeg-devel libpng-devel openssl-devel \
  10. libmcrypt-devel libxslt-devel libtidy-devel autoconf \
  11. iproute net-tools telnet wget curl && \
  12. yum clean all && \
  13. rm -rf /var/cache/yum/*
  14. RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && \
  15. tar zxf php-5.6.36.tar.gz && \
  16. cd php-5.6.36 && \
  17. ./configure --prefix=/usr/local/php \
  18. --with-config-file-path=/usr/local/php/etc \
  19. --enable-fpm --enable-opcache \
  20. --with-mysql --with-mysqli --with-pdo-mysql \
  21. --with-openssl --with-zlib --with-curl --with-gd \
  22. --with-jpeg-dir --with-png-dir --with-freetype-dir \
  23. --enable-mbstring --with-mcrypt --enable-hash && \
  24. make -j 4 && make install && \
  25. cp php.ini-production /usr/local/php/etc/php.ini && \
  26. cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && \
  27. sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf && \
  28. mkdir /usr/local/php/log && \
  29. cd / && rm -rf php* && \
  30. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  31. ENV PATH $PATH:/usr/local/php/sbin
  32. COPY php.ini /usr/local/php/etc/
  33. COPY php-fpm.conf /usr/local/php/etc/
  34. WORKDIR /usr/local/php
  35. EXPOSE 9000
  36. CMD ["php-fpm"]
  37. ----
  38. docker build -t php:v1 -f Dockerfile .
  39. docker images |grep php

image_1e5kqav2f1es81i8e1cg8b9eblu3u.png-93.8kB

image_1e5kqbm9ti1gjm647g1v6br2f4b.png-41kB


7.3 快速部署LNMP网站平台

image_1e5kqeqc41shk196ll17hk81n044o.png-62.8kB

  1. 1、自定义网络
  2. docker network create lnmp
  3. 2、创建Mysql容器
  4. docker run -d \
  5. --name lnmp_mysql \
  6. --net lnmp \
  7. --mount src=mysql-vol,dst=/var/lib/mysql \
  8. -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress mysql:5.7 --character-set-server=utf8
  9. 3、创建PHP容器
  10. docker run -d --name lnmp_php --net lnmp --mount src=wwwroot,dst=/wwwroot php:v1
  11. 4、创建Nginx容器
  12. docker run -d --name lnmp_nginx --net lnmp -p 88:80 \
  13. --mount src=wwwroot,dst=/wwwroot nginx:v1
  14. 5、以wordpress博客为例
  15. 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

  1. cd /var/lib/docker/volume/wwwroot/_data/
  2. vim test.php
  3. ---
  4. <?php phpinfo();?>
  5. ---

image_1e5krth9bnki1h5c1qip11671dvq6p.png-449.9kB

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

image_1e5ks32nr1v4b1tp51mue2k2j2k9.png-39.8kB

  1. 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 项目

  1. FROM centos:7
  2. MAINTAINER flyfish
  3. ENV VERSION=8.5.54
  4. RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \
  5. yum clean all && \
  6. rm -rf /var/cache/yum/*
  7. RUN wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \
  8. #RUN wget http://192.168.31.211/apache-tomcat-${VERSION}.tar.gz && \
  9. tar zxf apache-tomcat-${VERSION}.tar.gz && \
  10. mv apache-tomcat-${VERSION} /usr/local/tomcat && \
  11. rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \
  12. mkdir /usr/local/tomcat/webapps/test && \
  13. echo "ok" > /usr/local/tomcat/webapps/test/status.html && \
  14. sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \
  15. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  16. ENV PATH $PATH:/usr/local/tomcat/bin
  17. WORKDIR /usr/local/tomcat
  18. EXPOSE 8080
  19. CMD ["catalina.sh", "run"]

image_1e5m2oa887d2hndjvs181p113u16.png-155.8kB

image_1e5m2p5dbkpk6ulija1v9j66g1j.png-139kB


  1. 基于镜像 tomcat:v1 镜像 构建一个jenkins 部署 镜像
  2. vim Dockerfile-jenkis
  3. ---
  4. FROM tomcat:v1
  5. COPY jenkins.war /usr/local/tomcat/webapps/ROOT.war
  6. ---
  7. docker build -t tomcat-jenkins:v1 -f Dockerfile-jenkins .

image_1e5m3al1j1ieq15eo1s651gic1jai2d.png-37.4kB

  1. 使用tomcat-jenkins:v1 构建一个jenkins的项目
  2. 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


  1. 密码:
  2. docker exec -ti e0edd5f81092 cat /root/.jenkins/secrets/initialAdminPassword
  3. ---
  4. 67f0ce7c72dd4fca83f8f6d047fb46de
  5. ---
  6. 下面安装就可以了

image_1e5m3o3i61gd69ff1mvo19bc7qq3k.png-357.4kB

八 构建企业仓库vmware harbor

8.1 Harbor概述

  1. Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的
  2. 企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访
  3. 问控制 AD/LDAP集成以及审计日志等,足以满足基本企业需求。
  4. 官方地址:https://vmware.github.io/harbor/cn/

image_1e5m417661reqd5612pi12fnfmr41.png-226.2kB

8.2 Harbor安装有3种方式:

  1. 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
  2. 离线安装:安装包包含部署的相关镜像,因此安装包比较大
  3. OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor

8.3 安装 vmware harbor

8.3.1 安装docker-compose

  1. node06.flyfish 主机上面部署
  2. 首先要安装docker
  3. 然后 安装 安装docker-compose
  4. 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
  5. chmod +x /usr/local/bin/docker-compose

image_1e5m4dp8ncsbbsc1h2m1rg81bbi4e.png-132.6kB

image_1e5m4qv60vqd8t0ce614701l2u62.png-140.1kB

  1. # tar zxvf harbor-offline-installer-v1.5.1.tgz
  2. # cd harbor
  3. # vi harbor.cfg
  4. hostname = 192.168.100.16
  5. ui_url_protocol = http
  6. harbor_admin_password = 12345
  7. # ./prepare
  8. # ./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

  1. 默认用户名:admin
  2. 密码: 12345

image_1e5m5lfalp4f19km1ukb7fr3pl83.png-220.7kB

  1. 创建用户 flyfish
  2. 密码:Flyfish123

image_1e5m5ticd14u7c041oiv14jlakc8t.png-129.5kB

  1. libary 添加成员 flyfish

image_1e5m61ajuaeoq0p17201kh18qa9a.png-157.8kB

image_1e5m62cv4jc41a191kqu1uok1mpb9n.png-110.1kB


8.3.2 配置http镜像仓库可信任

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

image_1e5m69tc1p3m11cm1j45ov528oa4.png-53.5kB

image_1e5m6clhr61eedaidj1b671eu8au.png-123.4kB

  1. 登录镜像仓库:
  2. docker login http://192.168.100.16
  3. 用户名:flyfish
  4. 密码:Flyfish123

image_1e5m6c6k1187vk35ldgjhc1djqah.png-72.5kB

  1. 为镜像打一个tag
  2. 默认镜像的提交模式是:
  3. docker tag SOURCE_IMAGE[:TAG] 192.168.100.16/library/IMAGE[:TAG]
  4. 提交模式:
  5. docker push 192.168.100.16/library/IMAGE[:TAG]
  6. ----
  7. tomcat:v1 nginx:v1 php:v1 tomcat-jenkins:v1 镜像提交到仓库中:
  8. docker tag tomcat:v1 192.168.100.16/library/tomcat:v1
  9. docker tag nginx:v1 192.168.100.16/library/nginx:v1
  10. docker tag php:v1 192.168.100.16/library/php:v1
  11. docker tag tomcat-jenkins:v1 192.168.100.16/library/tomcat-jenkins:v1
  12. -----
  13. 上传镜像
  14. docker push 192.168.100.16/library/tomcat:v1
  15. docker push 192.168.100.16/library/nginx:v1
  16. docker push 192.168.100.16/library/php:v1
  17. 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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注