Docker仓库
在前边我们已经接触到仓库这个内容,修改镜像源那部分,这里继续拓展开来
- 创建仓库
> docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
- 修改配置文件,使之支持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
- 修改镜像标签
[root@localhost ~]# docker tag docker-test:latest 192.168.0.241:5000/docker-test:latest:1.0
[root@localhost ~]# docker images
- 将新打标签的镜像上传镜像到仓库
[root@localhost ~]# docker push 192.168.0.241:5000/docker-test
带basic认证的仓库
- 安装加密工具
[root@localhost ~]# yum install httpd-tools -y
- 设置认证密码
[root@localhost ~]# mkdir /opt/registry-var/auth/ -p
[root@localhost ~]# htpasswd -Bbn root 123456 > /opt/registry-var/auth/htpasswd
- 启动容器,在启动时传入认证参数
[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
- 使用验证用户测试
# 登陆用户
[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 命令来启动并运行整个应用程序。
- 安装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
- 编写编排文件
[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
- 启动
[root@localhost my_wordpress]# docker-compose up
#启动方法:docker-compose up
#后台启动方法:docker-compose up -d
-
测试,访问http://192.168.0.241:8000,可以反问到wordpress安装界面
-
docker-compose配置常用命令
docker-compose
用PIPEWORK为docker容器配置独立IP
- 安装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
- 配置桥接网卡
#安装桥接工具
> yum install bridge-utils.x86_64 -y
- 修改网卡配置,实现桥接
# 修改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
- 运行一个容器镜像测试
> pipework br0 $(docker run -d -it -p 6880:80 --name httpd_pw httpd) 192.168.0.220/24@192.168.0.254
- 在其他主机上测试端口及连通性
[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
- 再运行一个容器,设置网路类型为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>
- 重启容器后需要再次指定:
pipework br0 testduliip 172.16.146.113/24@172.16.146.1
pipework br0 testduliip01 172.16.146.112/24@172.16.146.1
结尾
使用容器的建议
- 不要以拆分方式进行应用程序发布
- 不要创建大型镜像
- 不要在单个容器中运行多个进程
- 不要再镜像内保存凭证,不要依赖IP地址
- 以非root用户运行进程
- 不要使用“最新”标签
- 不要利用运行中的容器创建镜像
- 不要使用单层镜像
- 不要将数据存放在容器内
关于Docker容器的监控
- 容器的基本信息:
包括容器的数量、ID、名称、镜像、启动命令、端口等信息 - 容器的运行状态:
统计各状态的容器的数量,包括运行中、暂停、停止及异常退出 - 容器的用量信息:
统计容器的CPU使用率、内存使用量、块设备I/O使用量、网络使用情况等资源的使用情况
网友评论