Docker安装及简单操作 (5)

[注:我没有退出容器 都是开了新的窗口 如果退容器操作 偷偷退出 ctrl p +ctrl q]

[root@docker01 ~]# docker commit 8bd1948d5d56 kod:v1 sha256:6ae314fd865f58349d1a7313755e93216c24d22953a9bf6a1c4b037b3a71c8fe [root@docker01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE kod v1 6ae314fd865f 25 seconds ago 618MB xiaoniao v1 a203dcdb4170 48 minutes ago 449MB busybox latest 6d5fcfe5ff17 3 days ago 1.22MB nginx latest 231d40e811cd 5 weeks ago 126MB centos 6.9 adf829198a7f 17 months ago 195MB

测试

初始命令执行多条 比如启nginx和php 这个时候直接写个脚本 初始脚本就行

[root@8bd1948d5d56 /]# vi /init.sh #!/bin/bash service start php-fpm nginx -g \'daemon off;\' # 给个执行权限 [root@8bd1948d5d56 /]# chmod +x /init.sh # 修改了容器 所以需要重新提交 [root@docker01 ~]# docker commit 8bd1948d5d56 kod:v2 sha256:aed221559af67b63fb5d6e148dcf676e2b462426820bc0f32cb5f70b9a580383 # 启动容器 检查存活 [root@docker01 ~]# docker run -d -p 80:80 kod:v2 /bin/bash /init.sh aa688297e10f499269b6f4f3d0cc73a773dc716da9bdf4066f5abdb1c828df37 [root@docker01 ~]# docker ps -a -l

Docker安装及简单操作

# 进容器下载缺失的东西 [每次id不一样 要注意] [root@docker01 ~]# docker exec -it 93f6b36fcd5e /bin/bash [root@93f6b36fcd5e /]# # php-GD库安装需要的模块 [root@93f6b36fcd5e /]# yum install php-mbstring php-gd # 重启 [root@93f6b36fcd5e /]# service php-fpm restart Stopping php-fpm: [ OK ] Starting php-fpm: [ OK ] # 再提交一次 [root@93f6b36fcd5e /]# exit exit [root@docker01 ~]# docker commit 93f6b36fcd5e kod:v4 sha256:3f8e74241285ac66b324a4abb4a6767a61a555d1f8490600a5b57f68e806c7d8 [root@docker01 ~]# docker rm -f `docker ps -a -q` # 测试 [root@docker01 ~]# docker run -d -p 80:80 kod:v4 /bin/bash /init.sh a28f441cf37fb674ed693ebdcf717854b35e78426712e95586e861145d124061

Docker安装及简单操作

九、dockerfile[重中之重]自动构建docker镜像

手动做镜像:大小几百M+,开发修改代码,我们需要启动容器拷贝代码,重新提交什么的

自动做镜像:类似ansible剧本,大小几kb,dockerfile不变,docker build一条完成更新

dockerfile 把手动做镜像的下载步骤什么的写成剧本形势

dockerfile 支持自定义容器的初始命令

1.dockerfile组成部分 基础镜像信息 FROM centos:6.9 ​ 制作镜像操作指令 RUN yum install openssh-server -y ​ 容器启动时执行指令 CMD ["/bin/bash"] 2.dockerfile常用指令 FROM # 这个镜像的妈妈是谁?(指定基础镜像) MAINTAINER # 告诉别人,谁负责养它?(指定维护者信息,可以没有) LABLE # 描述,标签 RUN # 你想让它干啥(在命令前面加上RUN即可)启一个新容器 ADD # 给它点创业资金(会自动解压tar) 制作docker基础的系统镜像 WORKDIR # 我是cd,今天刚化了妆(设置当前工作目录) VOLUME # 给它一个存放行李的地方(设置卷,挂载主机目录)持久化 EXPOSE # 它要打开的门是啥(指定对外的端口)(-P 随机端口) CMD # 奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换) 3.dockerfile其他指令 COPY # 复制文件(不会解压)rootfs.tar.gz ENV # 环境变量 ENTRYPOINT # 容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数) 4.总结步骤 1.手动做一次镜像 2.根据历史命令写dockerfile 3.使用dockerfile构建镜像 4.测试镜像 5.dockerfile1实践 # 所有的dockerfile都放在一起 dockerfile目录下 [root@docker01 ~]# cd /opt [root@docker01 /opt]# mkdir dockerfile [root@docker01 /opt]# cd dockerfile/ [root@docker01 /opt/dockerfile]# mkdir nginx [root@docker01 /opt/dockerfile]# cd nginx/ [root@docker01 /opt/dockerfile/nginx]# # 写dockerfile 名字必须以dockerfile命名 [root@docker01 /opt/dockerfile/nginx]# vim dockerfile FROM centos:6.9 RUN curl -o /etc/yum.repos.d/epel.repo RUN curl -o /etc/yum.repos.d/CentOS-Base.repo RUN yum install nginx unzip -y CMD ["nginx","-g","daemon off;"] # 做镜像 [root@docker01 /opt/dockerfile/nginx]# docker image build --network=host -t centos_nginx:v1 /opt/dockerfile/nginx/ -t:取名字 --network=host:使用宿主机网络 宿主机host劫持 速度变快 Successfully built 4bc88d907ec7 Successfully tagged centos_nginx:v1 # 测试 [root@docker01 /opt/dockerfile/nginx]# docker run -d -p 88:80 centos_nginx:v1 06bf747b508067dd02f95665e5000f318ba4acbc6c9ff1687b837d2215816761 [root@docker01 /opt/dockerfile/nginx]# docker ps -a -l

Docker安装及简单操作

6.dockerfile2实践

避免出现交互式问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggxjx.html