美文网首页
微服务中的容器技术---Docker(三),Docker仓库、编

微服务中的容器技术---Docker(三),Docker仓库、编

作者: singleZhang2010 | 来源:发表于2020-12-23 14:16 被阅读0次

Docker仓库

在前边我们已经接触到仓库这个内容,修改镜像源那部分,这里继续拓展开来

  1. 创建仓库
> docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry 
  1. 修改配置文件,使之支持http
[root@localhost ~]# cat  /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://registry.docker-cn.com","https://nrbewqda.mirror.aliyuncs.com","https://dmmxhzvq.mirror.aliyuncs.com"]
  "insecure-registries": ["192.168.0.241:5000"]
}
#重启docker让修改生效
systemctl restart  docker.service
  1. 修改镜像标签
[root@localhost ~]# docker tag docker-test:latest 192.168.0.241:5000/docker-test:latest:1.0
[root@localhost ~]# docker images
  1. 将新打标签的镜像上传镜像到仓库
[root@localhost ~]#  docker push   192.168.0.241:5000/docker-test

带basic认证的仓库

  1. 安装加密工具
[root@localhost ~]# yum install httpd-tools  -y
  1. 设置认证密码
[root@localhost ~]# mkdir /opt/registry-var/auth/ -p
[root@localhost ~]# htpasswd  -Bbn root 123456  > /opt/registry-var/auth/htpasswd
  1. 启动容器,在启动时传入认证参数
[root@localhost ~]#  docker run -d -p 5000:5000 -v /opt/registry-var/auth/:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry
  1. 使用验证用户测试
# 登陆用户
[root@localhost ~]#  docker login 192.168.0.241:5000
Username: root
Password: 123456
Login Succeeded
#认证文件的保存位置
[root@localhost ~]# cat .docker/config.json 
{
    "auths": {
        "192.168.0.241:5000": {
            "auth": "Y2xzbjoxMjM0NTY="
        },
        "https://index.docker.io/v1/": {
            "auth": "Y2xzbjpIenNAMTk5Ng=="
        }
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/17.12.0-ce (linux)"
    }
}

docker-compose编排工具

什么是docker-compose编排工具?
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,我们可以使用 YML 文件来配置应用程序需要的所有服务。然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。

使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

最后,执行 docker-compose up 命令来启动并运行整个应用程序。

  1. 安装docker-compose
# 下载pip软件
[root@localhost ~]# yum install -y python2-pip
# 下载 docker-compose
[root@localhost ~]# pip install docker-compose
#国内开启阿里云pip 下载加速:http://mirrors.aliyun.com/help/pypi
#修改pip.conf
#[global]
#index-url = https://mirrors.aliyun.com/pypi/simple/
#[install]
#trusted-host=mirrors.aliyun.com
  1. 编写编排文件
[root@localhost ~]# vim docker-compose.yml
version: '3'
services:
   db:
     image: mysql:5.7
     volumes:
       - /data/db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - /data/web_data:/var/www/html
     ports: 
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
  1. 启动
[root@localhost my_wordpress]# docker-compose up
  #启动方法:docker-compose up
  #后台启动方法:docker-compose up -d
  1. 测试,访问http://192.168.0.241:8000,可以反问到wordpress安装界面

  2. docker-compose配置常用命令


    docker-compose

用PIPEWORK为docker容器配置独立IP

  1. 安装pipework
> wget https://github.com/jpetazzo/pipework/archive/master.zip
>  unzip master.zip 
>  cp pipework-master/pipework  /usr/local/bin/
>  chmod +x /usr/local/bin/pipework
  1. 配置桥接网卡
#安装桥接工具
> yum install bridge-utils.x86_64 -y
  1. 修改网卡配置,实现桥接
# 修改eth0配置,让br0实现桥接
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.0.241
NETMASK=255.255.255.0
GATEWAY=192.168.0.254
DNS1=223.5.5.5
# 重启网络
[root@localhost ~]# /etc/init.d/network restart
  1. 运行一个容器镜像测试
> pipework br0 $(docker run -d -it -p 6880:80 --name  httpd_pw httpd) 192.168.0.220/24@192.168.0.254
  1. 在其他主机上测试端口及连通性
[root@localhost ~]# curl 192.168.0.220
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# ping 192.168.0.220 -c 1
PING 192.168.0.220 (192.168.0.220) 56(84) bytes of data.
64 bytes from 192.168.0.220: icmp_seq=1 ttl=64 time=0.043 ms
  1. 再运行一个容器,设置网路类型为none:
[root@localhost ~]# pipework br0 $(docker run -d -it --net=none --name test httpd:2.4) 192.168.0.221/24@10.0.0.254

#再进行测试
[root@localhost ~]# curl 192.168.0.221
<html><body><h1>It works!</h1></body></html>
  1. 重启容器后需要再次指定:
pipework br0 testduliip  172.16.146.113/24@172.16.146.1
pipework br0 testduliip01  172.16.146.112/24@172.16.146.1

结尾

使用容器的建议

  1. 不要以拆分方式进行应用程序发布
  2. 不要创建大型镜像
  3. 不要在单个容器中运行多个进程
  4. 不要再镜像内保存凭证,不要依赖IP地址
  5. 以非root用户运行进程
  6. 不要使用“最新”标签
  7. 不要利用运行中的容器创建镜像
  8. 不要使用单层镜像
  9. 不要将数据存放在容器内

关于Docker容器的监控

  • 容器的基本信息:
    包括容器的数量、ID、名称、镜像、启动命令、端口等信息
  • 容器的运行状态:
    统计各状态的容器的数量,包括运行中、暂停、停止及异常退出
  • 容器的用量信息:
    统计容器的CPU使用率、内存使用量、块设备I/O使用量、网络使用情况等资源的使用情况

相关文章

  • 微服务中的容器技术---Docker(三),Docker仓库、编

    Docker仓库 在前边我们已经接触到仓库这个内容,修改镜像源那部分,这里继续拓展开来 创建仓库 修改配置文件,使...

  • docker 普通使用

    docker类似集装箱原理。Docker技术的三大核心概念:镜像(Image)容器(Container)仓库(Re...

  • docker笔记

    一、docker: 二、docker能够做什么? 三、镜像和容器: 四、docker安装: 五、docker仓库:...

  • Docker 镜像

    镜像是 Docker 三大核心概念中最重要的Docker 三大核心:镜像容器仓库 镜像介绍 Docker 运行容器...

  • Docker资料整理-2编程开发篇

    微服务 Spring Cloud 组件 Docker 化 阿里云容器镜像服务如何创建阿里云docker镜像仓库? ...

  • Kubernetes(K8s)初探

    Docker技术 Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。 Docker技术的三大核心概念...

  • docker基本操作

    开机启动docker 启动docker服务 查看当前镜像仓库中的镜像 启动时查日志 容器信息查看 强制卸载 -f ...

  • docker系列(1) 基本概念,常用命令及安装部署

    1.docker 1.1 概念 docker三要素: 1.1.1镜像 1.1.2容器 1.1.3仓库 docker...

  • docker学习

    docker镜像 docker容器 docker仓库 安装docker docker版本 docker分为社区版和...

  • docker入门笔记

    《Docker技术入门与实践》笔记 2 核心概念 Docker的三个核心概念分别为:镜像、容器和仓库。 2.1 镜...

网友评论

      本文标题:微服务中的容器技术---Docker(三),Docker仓库、编

      本文链接:https://www.haomeiwen.com/subject/hgysnktx.html