准备好两台主机作为宿主机,主机应设静态ip,且在同一网段并能联网。
宿主机信息:
Host1-ip:192.168.135.77(网卡设备为ens33,作为私有仓库服务端)
Host2-ip:192.168.135.75(网卡设备为ens33,作为私有仓库客户端)
gateway:192.168.128.1
netmask:255.255.248.0
1、关闭防火墙和Selinux
vi /etc/selinux/config 将enforceing改为disabled
chkconfig firewall off 关闭防火墙
reboot 重启系统使之生效
步骤1的主要作用是便于安装docker和其他系统设置
2、安装docker
yum install docker
service docker restart 重启docker服务
3、搭建docker本地私有库
docker pull registry 拉取仓库镜像
docker run –d –p5000:5000 –v /opt/data/registry:/tmp/registry registry
这里要注意的是,docker的本地私有仓库镜像默认放在容器内的/tmp/registry,要想保存该仓库内的镜像,必须将本地的某个文件夹挂载在该目录下。
docker runregistry_iamge_id /bin/sh 启动该仓库镜像
启动该仓库镜像后才能在本地pull和push镜像
push镜像时可能会失败,可执行如下操作解决:在”/etc/docker/“目录下,编辑”daemon.json“文件。
在文件中写入{ "insecure-registries":["192.168.135.77:5000"]}
注意:私有仓库的服务端和客户端都要进行这一操作。
大多数情况下,可以去官方仓库拉取基础镜像。
docker pull linux_image
也可以自己制作基础镜像
1、制作docker的基础的Linux系统镜像
运行下面命令
tar-cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev--exclude=run --exclude=boot .(“不要忽略结尾处的”.””)
此命令是,将宿主机的根目录下大部分文件打成tar包并存放在当前目录,也可以设置其他目录替换“.”。
将tar文件导入到docker
dockerimport system.tar centos:7 system.tar为tar包名,centos:7为导入docker后的镜像名。
2、启动该镜像制作容器
通过Dockerfile的方式启动镜像,制作容器,此为其中一种方式。
dockerbuild –t=’centos’ .
这一操作可以启动定制的容器,且Dockerfile与其他需要配合的软件需处于当前目录。(注意:不要落下最后的“.”,它表示dockerfile所处位置)
在dockerfile内,可以配置容器的ssh服务,以及安装其他软件和配置其运行环境。
另一种方式为直接启动新建的docker基础系统镜像
dockerrun -it centos:7 /bin/bash
可以选择重命名容器名
dockerrename old容器名 new容器名
登录第一个方法新建的容器
dockerexec –it 容器id/bin/bash
可以选择对容器进行操作,然后将容器状态制作成新的image。
docker commit container_id new_image_name
在push镜像之前需要对目标镜像tag。
docker tag des_image localhost_ip:5000/des_image
然后push镜像
docker push local_ip:5000/des_image
查看上传的image
curl-XGET 192.168.135.77:5000/v2/_catalog
从私有仓库pull镜像
dockerpull 192.168.135.77:5000/centos:tag_name
1、安装各类工具
安装git
yum install git
安装pipework
git clone https://github.com/jpetazzo/pipework
使pipework命令生效
cp ~/pipework/pipework /usr/local/bin/
安装相应依赖软件bridge-utils(网桥)
yum install iputils-arping bridge-utils –y
2、更改宿主机网络配置文件
网络配置如下:
cd /etc/sysconfig/network-scripts/ifcfg-ens33
cp ifcfg-ens33 ifcfg-br0
vi ifcfg-ens33删除ip,netmask,新增BRIDGE=br0。
vi ifcfg-br0 设TYPE=Bridge,DEVICE=br0。
Service network restart
Service docker restart
开启一个image并指定网络模式为none(这样,创建的容器就不会通过docker0自动分配ip了,而是根据pipework工具自定ip指定)
docker run -itd --net=none --name=my_centos image_id /bin/bash
给该容器配置网络(注意网卡里的gateway不能缺失)
pipework br0 –i ens33 my_centos192.168.135.73/[email protected]
-i指定网卡名,后面为指定container的ip,netmask,gateway。
登录该容器
docker exec -it my_centos /bin/bash
ifconfig ens33 若无ifconfig则可yum安装net-tools工具
从私有仓库pull镜像
dockerpull 192.168.135.77:5000/centos:tag_name
安装docker,重复步骤五、六。
验证是否能ping通。
1、https://blog.csdn.net/linux_player_c/article/details/53117238
2、https://www.cnblogs.com/chen110xi/p/6349454.html