
当然还有一些情况,我们需要的镜像DockerHub上不存在,例如:Linux信创的环境,在DockerHub上就很难知道对应的镜像,如果需要这种镜像的话就需要通过运行的系统来制作镜像了。
/proc 、 /sys 、 /run 、 /dev 这几个目录都是系统启动时自动生成的,虽然也属于文件系统一部分,但是他们每次开机都会有变化,所以打包的时候就应该忽略它们
参数说明:
-c或--create 建立新的备份文件
-f<备份文件>或--file=<备份文件>指定备份文件
-p或--same-permissions 用原来的文件权限还原文件
-v或--verbose 显示指令执行过程
z或--gzip或--ungzip 通过gzip指令处理备份文件
--numeric-owner 以用户识别码及群组识别码取代用户名称和群组名称
tar 命令更多参数可参考:
Linux tar 命令
Linux tar.gz、tar、bz2、zip 等解压缩、压缩命令详解
导入docker之前,最好修改下docker的默认存储路径。
具体修改方法可参考: Linux 下修改Docker默认存储路径
tips: 运行导入的镜像的时候必须带command,否则启动报如下错误. 最后的/bin/bash 不能少
提示: 制作的镜像文件太大,会导致启动容器时候失败: Getting the final child's pid from pipe caused "EOF"
参考文章:
[Docker 镜像导出和导入] https://yeasy.gitbook.io/docker_practice/container/import_export
------------------------------------预备:安装docker-ce------------------------------------------------------
1、安装依赖
docker依赖于系统的一些必要的工具,可以提前安装。
yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
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:
加上USER root以后,
继续build又报错:
只好重新把docker的deamon配置改了,放在新的磁盘上。这不是重点,这里掠过。
把以下配置放在docker-compose.yml中:(注意缩进和分隔,冒号后面必须有空格)
然后启动容器:(这句话要在compose文件所在的目录下执行)
直到有一步骤报错: Failed to get D-Bus connection: Operation not permitted
就是在systemctl 或 service 对mysql进行启停的时候,报的.
网上查到的解决方案是要重新用一种方式run:
然后一直报错说找不到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成功.:
用下面的语句重新生成镜像:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)