重启docker服务,容器全部退出的解决办法
- 方法一:添加
--restart=always
#在启动容器时加入参数,当docker重启后,会自动启动该容器
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry registry
- 方法二:配置文件中添加"live-restore": true
#在配置文件中添加一下参数,重启后会启动容器
vi /etc/docker/daemon.json
{
"live-restore": true
}
Docker构建私有registry
启动registry
#创建目录
mkdir -p /opt/registry
#启动registry容器
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry registry
修改配置文件
在配置文件中添加insecure-registries信息,并重启docker
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://ccr.ccs.tencentyun.com/1997styhome/home"],
"insecure-registries": ["10.0.0.100:5000"]
}
制作本地镜像并push
推送到本地仓库的镜像标签需要符合格式,首先需要修改镜像标签
#修改nginx镜像标签
docker tag nginx 10.0.0.100:5000/1997sty/nginx:v1
#推送镜像到本地仓库
docker push 10.0.0.100:5000/1997sty/nginx:v1
异地进行pull镜像
其他主机拉取镜像时,需要在配置文件中添加insecure-registries信息,并重启docker
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://ccr.ccs.tencentyun.com/1997styhome/home"],
"insecure-registries": ["10.0.0.100:5000"]
}
如果没有配置会产生以下报错
[root@docker2 ~]# docker pull 10.0.0.100:5000/1997sty/nginx:v1
Error response from daemon: Get https://10.0.0.100:5000/v1/_ping: http: server gave HTTP response to HTTPS client
拉取镜像
docker pull 10.0.0.100:5000/1997sty/nginx:v1
本地仓库加安全认证
可以通过http加密的方式添加登录验证
#安装httpd-tools
yum install httpd-tools -y
#创建目录
mkdir /opt/registry-auth/ -p
#生成密码
htpasswd -Bbn 1997sty 123 > /opt/registry-auth/htpasswd
重新生成带有秘钥功能的registry容器
#删除所有容器
docker conrm -f `docker ps -aq`
#生成新容器
docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry --name register-auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
push镜像之前,需要进行login
docker login 10.0.0.100:5000
Username: 1997sty
Password:
Login Succeeded
push镜像之前,需要进行login
docker login 10.0.0.100:5000
Username: 1997sty
Password:
Login Succeeded
docker pull 10.0.0.100:5000/1997sty/centos:v1
harbor实现图形化register
安装
安装docker和docker-compose
#安装docker的步骤参考之前的笔记
yum install -y docker-compose
上传
harbor-offline-installer-v1.5.1.tgz
到/opt,并解压
- 资源百度查找下载
cd /opt
tar zxvf harbor-offline-installer-v1.5.1.tgz
cd harbor
修改harbor.cfg配置文件
hostname = 10.0.0.100
harbor_admin_password = 123456
执行install.sh
sh install.sh
修改各个节点的docker配置文件,并重启
- 主要是添加参数,重启docker后可以保证容器可以自启动
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://ccr.ccs.tencentyun.com/1997styhome/home"],
"insecure-registries": ["10.0.0.100:5000"],
"live-restore": true
}
在harbor中操作
- 在网页中可以创建项目可用户,图形化界面,默认管理员用户为
admin
制作镜像并上传habor
首先需要修改配置文件,将该仓库写入配置文件
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://ccr.ccs.tencentyun.com/1997styhome/home"],
"insecure-registries": ["10.0.0.100:5000","10.0.0.100"],
"live-restore": true
}
实现推送镜像
- 需要在网页上创建好对应的项目,然后向该项目推送镜像
#修改镜像标签
docker tag centos:6.9 10.0.0.100/1997sty/centos:v1
#登录
docker login 10.0.0.100
Username: admin
Password:
Login Succeeded
#推送镜像
docker push 10.0.0.100/1997sty/centos:v1
Docker本地网络类型
#查看支持网络类型
[root@docker1 /]# docker network ls
NETWORK ID NAME DRIVER SCOPE
24580c122321 bridge bridge local
5261e1609681 host host local
d562731f776c none null local
使用
docker run
启动容器时,添加--network=xxxxx
参数来指定网络类型
- none : 无网络模式,无法连接外网也没有局域网
- bridge : 默认模式,相当于NAT,具体功能可以参考vmware虚拟机的NAT网络
- host : 共用宿主机Network NameSapce,主机名和网络设置与宿主机相同
- container : 与其他容器共用Network Namespace,主要可以实现容器高可用(当一个容器发生故障,可以快速启动一个容器接替故障容器继续工作)
Docker跨主机访问-macvlan实现
在两台宿主机上分别创建一个网络
docker network create --driver macvlan --subnet=100.0.0.0/24 --gateway=100.0.0.254 -o parent=eth0 macvlan_1
#ubuntu或其他版本需要
#ip link set eth0 promsic on
创建容器,指定网络模式和ip,创建的网络没有外网
- docker1
docker run -it --network macvlan_1 --ip=100.0.0.11 centos:6.9 /bin/bash
- docker2
docker run -it --network macvlan_1 --ip=100.0.0.12 centos:6.9 /bin/bash
Docker 跨主机访问-overlay实现
启动
consul
服务,实现网络的统一配置管理
#docker1
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
修改配置文件添加以下内容,并重启
- docker1
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://ccr.ccs.tencentyun.com/1997styhome/home"],
"insecure-registries": ["10.0.0.100:5000","10.0.0.100"],
"live-restore": true,
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
"cluster-store": "consul://10.0.0.100:8500",
"cluster-advertise": "10.0.0.100:2376"
}
- docker2
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://ccr.ccs.tencentyun.com/1997styhome/home"],
"insecure-registries": ["10.0.0.100:5000","10.0.0.100"],
"live-restore": true,
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
"cluster-store": "consul://10.0.0.100:8500",
"cluster-advertise": "10.0.0.101:2376"
}
创建overlay网络
docker network create -d overlay --subnet 172.116.0.0/24 --gateway 172.11.0.254 overlay
#创建完成后可以通过命令在两台宿主机上查看
#docker network ls
两台宿主机启动容器测试
#docker1,docker2
#每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网
docker run -it --network overlay busybox /bin/sh
- docker1查看ip
- docker1内网和外网测试
- docker2查看ip
- docker2内网和外网测试
最后一次更新于2020-06-02 16:53
0 条评论