docker安装与私有仓库搭建

                                                    前言

最近研究docker的安装和使用,在这个过程中可谓是坎坎珂珂,一步一步坑的踩了过来,为了避免以后再遇到这种情况,特写这篇博客,希望大家在安装使用的时候能少走弯路。话不多说,咱们实际操作走起。

docker安装:

  1. 参考地址:https://www.runoob.com/docker/centos-docker-install.html
  2. 卸载旧版本,较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

    3. 

安装 Docker Engine-Community

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 

使用以下命令来设置稳定的仓库。

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

启动docker

# 开机自启
sudo systemctl enable docker 
# 启动docker服务  
sudo systemctl start docker
# 关闭docker服务  
sudo systemctl stop docker

# 守护进程重启
sudo systemctl daemon-reload
# 重启docker服务
sudo systemctl restart docker

docker就安装好了,其他操作指令请使用www.baidu.com

                     docker 私有仓库搭建

想要使用docker-compose,前提条件得建立自己的私有仓库registry镜像,那我们就开始下载它吧

在 Docker 中,当我们执行 docker pull xxx 的时候,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用。

所以,我们也可以带上仓库地址去拉取镜像,如:docker pull registry.hub.docker.com/library/alpine,不过要注意,这种方式下载的镜像的默认名称就会长一些。

如果要在公司中使用 Docker,我们基本不可能把商业项目上传到公共仓库中,那如果要多个机器共享,又能怎么办呢?

正因为这种需要,所以私有仓库也就有用武之地了。

所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。

下面我们用官方提供的registry镜像来搭建私有镜像仓库,当然还有其它很多方法。

下载镜像registry

[root@registry ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
81033e7c1d6a: Pull complete 
b235084c2315: Pull complete 
c692f3a6894b: Pull complete 
ba2177f3a70e: Pull complete 
a8d793620947: Pull complete 
Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54
Status: Downloaded newer image for registry:latest

 

运行registry容器

[root@registry ~]# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest 
06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9

参数说明
-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
-v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
--name registry:创建容器命名为registry,你可以随便命名;
registry:latest:这个是刚才pull下来的镜像;

测试镜像仓库中所有的镜像

确认服务器安全组添加了规则

同时确认防火墙开放了5000端口,操作内容

firewall命令:

systemctl status firewalld		 			#查看firewall防火墙状态
firewall-cmd --list-ports					#查看firewall防火墙开放端口
systemctl start firewalld.service			#打开firewall防火墙
systemctl stop firewalld.service			#关闭firewall防火墙
firewall -cmd --reload						#重启firewal防火墙
systemctl disable firewalld.service			#禁止firewall开机启动  

#开放firewall防火墙端口,需重启防火墙生效
firewall-cmd --zone=public --add-port=80/tcp --permanent 	

命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

iptable防火墙:

service iptables status 	#查看iptable防火墙状态
iptables -L -n -v			#查看iptable防火墙规则
systemctl start  iptables	#打开iptable防火墙
systemctl stop firewalld	#关闭iptable防火墙
yum install  iptables -y	#安装iptable防火墙
systemctl enable iptables	#开机自启iptable防火墙
systemctl disable firewalld	#开机自动关闭iptable防火墙
iptables -F					#清空iptable的规则
service iptables save  		#保存iptable防火墙规则

iptables -A INPUT -p tcp --dport 80 -j REJECT #禁止来自80端口访问的数据包
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许来自80端口访问的数据包

iptables -A OUTPUT -p tcp --sport 80 -j REJECT #禁止从80端口出去的数据包
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT #允许从80端口出去的数据包

访问地址如:127.0.0.1:5000/v2,  我这里是随便填的地址,根据你们实际环境配置如:ip:5000/v2 

浏览器访问成功说明没有问题

上传到镜像服务器

[root@node ~]# docker push 172.18.18.90:5000/busybox:v1 
The push refers to repository [172.18.18.90:5000/busybox]
Get https://172.18.18.90:5000/v2/: http: server gave HTTP response to HTTPS client

注意了,这是报错了,需要https的方法才能上传,我们可以修改下daemon.json来解决:

[root@node ~]# vim /etc/docker/daemon.json 
{
  "registry-mirrors": [ "https://registry.docker-cn.com"],
  "insecure-registries": [ "172.18.18.90:5000"]
}

daemon.json这个文件这里重点说明一下,这个两个参数是必须要配的

registry-mirrors  这个参数是配置加速镜像的,相当于你玩游戏的时候弄个加速器,能让你操作的时候更快。

insecure-registries  这个参数是配置http非安全访问的,为什么要配置非安全访问呢,因为安全访问搭起来太复杂了,如果只是新手用http访问就挺好的,毕竟只是学习,如果想用https能访问,该博客已与百度建立合作关系,详情请访问www.baidu.com,这里就不多说了,

好了私有仓库搭建好了

下一章节再讲一下在idea下操作docker-maven-plugin这个插件实现自动化部署,

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值