文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Docker二所镜像制作

2024-04-02 19:55

关注

Docker二所镜像制作

1、dockerfile 里不能有交互式命令。

     FROM centos:6.9  加载镜像

     RUN curl -o /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-6.repo   //base源优化

      RUN curl -o /etc/yum.repos.d/epel.repo   http://mirrors.aliyun.com/repo/epel-6.repo   

// EPEL (Extra Packages for Enterprise Linux)(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目.

     RUN  (类似docker run的操作)启动一个临时容器,产生文件变化,提交临时镜像,保留变化,删除临时容器。

      RUN  基于上面的临时镜像,启动一个临时容器,产生文件变化,再次 提交临时镜像,保留变化,删除临时容器。直到最有一个临时镜像保留下来。

     RUN echo "192.169.11.2  mirrors.aliyun.com" >>/etc/hosts    劫持host,每次启动容器,hosts都会被自动改为容器名,要生效,这个RUN必须是 最后一条RUN,或把所有RUN通过&&  \ 连成一条命令,这样作为最后一个临时镜像,会保留下来。

      ADD run.sh /run.sh    //这个不会启动临时容器,所以不会改hosts。 如果是URL或压缩包,会自动下载或自动解压

      RUN 775 /run.sh

      CMD ["/bin/bash","/run.sh"]

2、docker image prune   删除没有名字也没有版本的镜像,怎么会产生名字和TAG为<none>的镜像?<----docker image rm -f  正在运行的镜像;或dockerfile构建一半的时候Ctrl+c也会产生。

3、 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7

        -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

        通过ENV环境变量 MYSQL_ROOT_PASSWORD,来设置MySQL初始密码,在 docker run 通过 -e MYSQL_ROOT_PASSWORD=111111可以设定该容器的运行时密码。

4、使用ADD,tar包下载到本地,使用ADD自动解压加到镜像中,copy则不会解压。

5、ADD yum install openssh-server -y   //在脚本service sshd start,

     ssh root@192.168.1.1  -p 22   //因为 没有密码还是不能通过ssh登录,需要

     echo "123456" | passwd --stdin root   // 更新用户密码信息,适用于shell脚本,非交互式设置root密码,或使用脚本变量$1用户设置密码。失败 问题原因之一就是出在了密码中有"!"。继续测试echo命令和"!",知道了"!"在echo中是有不同意义的,如果要输出"!",就需要"\"来转译。

6、tail -F     等同于--follow=name  --retry,根据文件名进行追踪,并 保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

7、docker run 指定的参数会当成 ENTRYPOINT的参数,而 CMD会被替换。 ENTRYPOINT:  启动容器时执行的Shell命令,同CMD类似,只是由ENTRYPOINT启动的程序 不会被docker run命令行指定的参数所覆盖 ,而且, 这些命令行参数会被当作参数传递给ENTRYPOINT指定指定的程序

8、配置文件插入内容:echo "$1" >>/etc/hosts    、、// $1是 docker run 参数

9、docker container top 容器ID   、//容器的TOP命令,查看运行的程序、服务

10、利用数据卷对数据进行备份、恢复和迁移: http://www.dockerinfo.net/%e6%95%b0%e6%8d%ae%e5%8d%b7volumes

11、docker服务默认创建一个docker0网桥(其上有一个docker0内部接口),它在内核层连通了其它的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。brctl show(apt-get isntall bridge-utils)查看网桥和端口连接信息,其中STP enabled为no,川大使用须注意网络环路问题!

12、docker容器开启多个服务,最简单的就是把多个命令放到一个启动脚本里面,另外就是使用进程管理工具,例如使用supervisor来管理容器中的多个进程,dockerfile中CMD ["/usr/bin/supervisord"],通过修改/etc/supervisor/conf.d/supervisord.conf配置文件启动多个服务;

Docker二所镜像制作

13、查找文件并拷贝到一个目录下:find /home/ -name "*.rpm"  -tpye f | xargs -i mv {} myfold   // -i 或者是-I,将xargs的每项名称,一般是一行一行赋值给{}。

14、sz/rz 是基于ZModem传输协议的命令。对传输的数据会进行核查,并且有很好的传输性能。使用起来更是非常方便,但前提是window端需要有能够支持ZModem的telnet或者SSH客户端,例如secureCRT。

yum -y install lrzsz

15、

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯