我想基于centos 7构建一个docker镜像,dockerfile如下
FROM centos
MAINTAINER pengji jipeng92@gmail.com
WORKDIR /root
COPY MySQL-5.6.26 /mysql
RUN yum update
RUN yum -y install java-1.8.0-openjdk wget httpd php php-mysqlnd /mysql/*
RUN mysql_install_db --user=mysql
ENV MYSQL_ROOT_PASSWORD=root
ENV MYCAT_USER mycat
ENV MYCAT_PASS mycat
RUN wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.64/bin/apache-tomcat-7.0.64.tar.gz
RUN tar xvf apache-tomcat-7.0.64.tar.gz -C /usr/local/ && mv /usr/local/apache-tomcat-7.0.64/ /usr/local/tomcat
RUN wget http://code.taobao.org/svn/openclouddb/downloads/old/MyCat-Sever-1.2/Mycat-server-1.2-GA-linux.tar.gz
RUN mkdir /usr/local/mycat && tar xvf Mycat-server-1.2-GA-linux.tar.gz -C /usr/local/mycat && useradd mycat && \
chown -R mycat.mycat /usr/local/mycat && chmod a+x /usr/local/mycat/bin/*
EXPOSE 8080 8066 9066
COPY /home/jipeng/dockerfiles/dataguru/java_tomcat_mysql/startup.sh /root/startup.sh
RUN chmod a+x /root/startup.sh
ENTRYPOINT /root/startup.sh
然后按命令构建
docker build -t pengji/mycat .
过程如下
Sending build context to Docker daemon 317 MB
Step 0 : FROM centos
---> bb3d629a7cbc
Step 1 : MAINTAINER pengji jipeng92@gmail.com
---> Using cache
---> cdbbb4de4d8e
Step 2 : WORKDIR /root
---> Using cache
---> 6d6a40194219
Step 3 : COPY MySQL-5.6.26 /mysql
---> Using cache
---> 7cfa1ec8c6b9
Step 4 : RUN yum update
---> Running in fc44891ca20a
Loaded plugins: fastestmirror, ovl
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).
3. Disable the repository, so yum won't use it by default. Yum will then
just ignore the repository until you permanently enable it again or use
--enablerepo for temporary usage:
yum-config-manager --disable <repoid>
4. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:
yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
无法为repo找到有效的baseurl:base / 7 / x86_64
我该如何解决这个问题?谢谢。
答案 0 :(得分:1)
也许您设置了http_proxy并且您的代理服务器未获得。 取消设置http_proxy
答案 1 :(得分:0)
通过添加一些防火墙规则解决了该问题
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-masquerade
答案 2 :(得分:0)
我遇到了同样的问题,由于docker0接口上缺少MASQUERADE iptables规则。
我通过tcpdump注意到容器正在尝试使用自己的IP退出
.872491 IP(tos 0x0,ttl 63,id 44842,偏移量0,标志[DF],原始TCP (6),长度60)
172.17.0.2 .39146> 147.75.69.225.80:标志[S],cksum 0x856e,seq 241251313,win 29200,选项[mss 1460,sackOK,TS val 67935451 ecr 0,nop,wscale 7],长度为0
我在/etc/docker/daemon.json中添加了以下选项,最终容器到达了外部世界
{
...
"ip-masq": true,
...
}
确保将deamon --iptables选项设置为true,否则将不添加MASQUERADE规则。
不管怎么说
或者可以伪装创建自定义网络并将其与容器关联