------------------------------------预备:安装docker-ce------------------------------------------------------

1、安装依赖

docker依赖于系统的一些必要的工具,可以提前安装。

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

2、添加软件源

3、安装docker-ce

yum clean all

yum makecache fast

yum -y install docker-ce

4、启动服务

通过systemctl启动服务

systemctl start docker

------------------------------------开始制作镜像------------------------------------------------------

docker pull percona:5.7-centos

然后 创建 Dockerfile:

FROM percona:5.7-centos AS runtime

LABEL maintainer="lantianyun@66law.cn"

#必须加上这句,不然后面的yum会报没有权限

USER root

#添加python包(自动解压)

ADD pkg.tar.gz /usr/local

#删除压缩包

RUN rm -f /usr/local/*.tar.gz

RUN yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel epel-release gcc gcc-c++ xz-devel readline-devel gdbm-devel sqlite-devel tk-devel db4-devel libpcap-devel libffi-devel

RUN yum -y install wget

RUN wget --no-check-certificate https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

RUN rpm -Uvh ./*.rpm --nodeps --force

# 解压python3安装包

RUN tar -zxvf Python-3.7.2.tgz

# 进入python3安装包目录

RUN cd Python-3.7.2

# 将python3安装在这个目录

RUN ./configure --prefix=/usr/local/python3

# 编译和安装

RUN make && make install

# 创建python3软连接

RUN ln -s /usr/local/python3/bin/python3 /usr/bin/python3

# 创建pip3的软连接

RUN ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

没有用root用户执行,权限错误

加上USER root以后,

继续build又报错:

No space left on device

No space left on device

只好重新把docker的deamon配置改了,放在新的磁盘上。这不是重点,这里掠过。

把以下配置放在docker-compose.yml中:(注意缩进和分隔,冒号后面必须有空格)

mysql:

image: percona:5.7-centos

restart: always

volumes:

- /data/percona_template/ltmy.cnf:/etc/my.cnf.d/ltmy.cnf

- /data/percona_template/log:/var/log/mysql

ports:

- "3308:3306"

environment:

MYSQL_ROOT_PASSWORD: "123asd"

然后启动容器:(这句话要在compose文件所在的目录下执行)

docker-compose up -d

之后按照Dorckerfile进行一系列的安装

直到有一步骤报错:Failed to get D-Bus connection: Operation not permitted

就是在systemctl 或 service 对mysql进行启停的时候,报的.

网上查到的解决方案是要重新用一种方式run:

docker run -d -it --privileged percona_template_mysql_1 /usr/sbin/init

然后把已经有的容器生成新的镜像提交

docker commit -m "centos_with_mysql_python" -a "lantianyun@66law.cn" percona_template_mysql_1 percona_with_python

其中percona_template_mysql_1是已有容器名,percona_with_python是要生成的镜像名

新生成的镜像

然后一直报错说找不到systemctl,没有systemctl就不能方便得在docker内部启停mysql.百度基本上是如下方案:

1.启动(run)镜像时候 -v /sys/fs/cgroup:/sys/fs/cgroup:ro /usr/sbin/init

2.在dockerfile中添加cmd ["/usr/sbin/init"]

但各种尝试,都报错.最常见的是这个错误:

Failed to mount tmpfs at /run: Operation not permitted

[!!!!!!] Failed to mount API filesystems, freezing.

报错

无数次尝试以后,终于得知在启动的时候,不用-it,改用-d成功.:

docker run -p 3307:3306 --name mypy57 -e MYSQL_ROOT_PASSWORD=123asd -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged mypy:57 /usr/sbin/init

docker exec -it -u root [容器名] bash

进去以后,测试了systemctl start/stop/status mysql 可以用.只是mysql 不能登录了. 用修改配置文件增加skip-grant-tables的办法修改了密码,并grant privileges,终于mysql可用了.

用下面的语句重新生成镜像:

docker commit -m "centos7_with_mysql57_python3" -a "lantianyun@66law.cn" mypy57 cmp:7573

docker安装linux镜像制作,制作镜像(含centos上docker安装)相关推荐

  1. win10安装linux系统视频播放器,u盘安装linux视频mac制作win10安装u盘

    5. 用柔软的湿布清除打印机内部灰尘.污迹.墨水渍和碎纸屑,防止损坏.其次,用万用表检查外部电压是否符合要求,雨林木风win8系统,电压过高或过低都可能引起主机电源发生过压或欠压电路的自动停机保护 飞 ...

  2. ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装

    ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装 系统安装 下载CentOS系统制作系统U盘 笔记本电源设置 网络设置 WiFi类型查看验证设置联网 设置固定IP 安装MySQ ...

  3. 初次安装Linux(Ubuntu)(ssh,ftp服务安装)

    目录 ■SSH服务安装 ■FTP服务安装 ■JRE安装 ■JDK安装 ■查看各种连接 ■UNIX 与 Linux ■linux命令中的参数前的一横(-)和两横(--)的区别 初次安装完毕linux之后 ...

  4. linux 6.5桌面环境kde,CentOS 5/6 安装 GNOME 或 KDE 桌面

    1.安装 XWindow yum-ygroupinstall'XWindowSystem' 2.1.Centos 5.x 安装 GNOME 或 KDE (可择一安装) GNOME yum-ygroup ...

  5. 在PK体系下的CentOS上编译安装 MySQL 5.7

    本文主要介绍如何在 PK 体系下的 CentOS 上编译安装 MySQL 5.7,本文使用的操作系统环境为: CentOS 版本: # cat /etc/redhat-release CentOS L ...

  6. CentOS上快速安装Oracle11g数据库

    CentOS上快速安装Oracle11g数据库 下载RMP-GPG-KEY wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /e ...

  7. CentOS上快速安装Oracle服务器脚本

    CentOS上快速安装Oracle服务器脚本 配置repos源 # 注释下列代码,可能导致源问题 # cd /etc/yum.repos.d # wget http://yum.oracle.com/ ...

  8. Postgresql在CentOS上的安装(脚本在线安装)

    场景 PostGresSQL简介与Windows上的安装教程: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/113981563 ...

  9. ELK-日志收集系统在Centos上环境安装

    ELK-日志收集系统在Centos上环境安装 文章目录 ELK-日志收集系统在Centos上环境安装 前言 安装 elastcsearch6.5.4安装 准备 学习资料 启动 创建新用户 取掉只能本机 ...

最新文章

  1. SSH学习-Hibernate关联查询
  2. 基于高德地图Windows Phone API 快速开发地图相关APP(二)
  3. 无法上网dns转发_苹果笔记本上网很慢怎么回事?macbook无线上网慢的解决方法...
  4. ITK:从文件读取转换
  5. 制造业物料清单BOM、智能文档阅读、科学文献影响因子、Celebrated Italian mathematician ZepartzatT Gozinto 与 高津托图...
  6. Java——反射(Class.forName()读取配置文件举例).
  7. mysql选择数据库创建数据库
  8. webwork在freemarker中使用iterator
  9. 初中数学最全几何模型_老师熬夜整理:初中数学最全几何模型大汇总,学生大呼“过瘾”...
  10. python实现语义分割_如何用PyTorch进行语义分割?一文搞定
  11. 数据结构—二叉树的存储结构
  12. Ubuntu server树莓派版本默认用户名密码及密码修改
  13. 设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
  14. 计算机DNS怎么配置,dns设置,教您怎么设置dns地址
  15. C语言文本文档汉字乱码处理问题
  16. react中使用Route报错` A <Route> is only ever to be used as the child of <Routes> element, never rendered`
  17. 如何将图片变成GIF图?一键完成gif制作
  18. Altium Designer基础PCB布局布线
  19. Monitor监控系统
  20. 给通信专业研究生——安心完成培养,你不是在劣势下和计算机学生抢饭碗来的

热门文章

  1. 【攻防世界】十二、功夫再高也怕菜刀
  2. 【iOS开发】一键表达对女儿的爱
  3. android使用邮箱发送验证码
  4. 【黑马程序员】 学习笔记 - Java基础
  5. 计算机网络--网卡配置调优
  6. QCustomPlot之性能提升
  7. 删除iPhone邮箱smtp服务器,教你iPhone邮件怎么添加删除附件及iPhone特殊代码分享...
  8. 【自考总结】走过的弯路,都是你成长的旅途
  9. 计算机硬盘写入错误怎么办,电脑连接移动硬盘进行读写时为什么总是出错 如何解决?...
  10. oracle号码段拆开,学习-SQL查询连续号码段的巧妙解法