栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux学习-Docker学习之Dockerfile

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux学习-Docker学习之Dockerfile

dockerfile命令
  • FROM:基础镜像
    • FROM centos:6.9
    • FROM centos@ImageID
  • RUN:构建镜像过程中运行的命令
    • bash程序–使用&&连接多个命令
#仅限bash程序,多个命令通过&&连接
RUN cd /etc/yum.repos.d && mkdir bak && mv *.repo bak/ && echo '[local]nname=linuxbasenbaseurl=ftp://192.168.88.101/centos6newngpgcheck=0nenabled=1n'>/etc/yum.repos.d/local.repo && yum ma
kecache fast && yum install -y openssh-server
  • 非bash程序–通过[]来写,第一个参数为命令,后面通过,分隔书写参数,此处方式可以将程序命令写入bash脚本,通过执行脚本实现相应功能
RUN ["mysqld","--initialize-insecure","--user=mysql","--basedir=/usr/local/mysql","--datadir=/data/mysql/data"]
  • CMD :使用镜像启动容器时运行的命令
  • EXPOSE :暴露端口
  • COPY:拷贝dockerfile所在目录文件(支持通配符)至容器指定目录下,如果拷贝是目录,只拷贝目录下的文件,
    • 源可以有多个,目标只能有一个
  • ADD:功能同COPY,可以实现解压.tar.*压缩文件
  • ENTRYPOING:功能同CMD,但使用此指令设定的程序,在使用Run启动容器时指定执行程序时不会被替换掉
dockerfile构建centos_sshd 使用dockerfile创建centos6.9_sshd
#创建目录存放dockerfile
[root@docker ~]# mkdir -p /opt/dockerfile/centos6.9
#创建dockerfile文件
[root@docker centos6.9]# vim dockerfile
# CentOS6.10-SSHDv1.0
FROM centos@f1af727749c4
RUN cd /etc/yum.repos.d && mkdir bak && mv *.repo bak/ && echo -e "[local]nname=linuxbasenbaseurl=ftp://192.168.88.101/centos6newngpgcheck=0nenabled=1n">/etc/yum.repos.d/local.repo && yum ma
kecache fast && yum install -y openssh-server
RUN echo "123456" | passwd --stdin root
RUN /etc/init.d/sshd start && /etc/init.d/sshd stop
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

通过dockerfile生成镜像
[root@docker centos6.9]# docker image build -t "tye/centos6.9-sshd:v1.0" ./
[root@docker centos6.9]# docker image ls
REPOSITORY           TAG       IMAGE ID       CREATED              SIZE
tye/centos6.9-sshd   v1.0      51762c7dec10   about a minute ago   332MB
centos               6.10      f1af727749c4   4 weeks ago          194MB
centos               7         eeb6ee3f44bd   4 weeks ago          204MB
centos               latest    5d0da3dc9764   4 weeks ago          231MB
nginx                1.14      295c7be07902   2 years ago          109MB
ubuntu               15.10     9b9cb95443b5   5 years ago          137MB
#可以通过--rm参数实现容器关闭后自动销毁
[root@docker centos6.9]# docker container run -it --rm b3072f59a537 /bin/bash
#删除镜像时,使用以下命令可以删除掉通过dockerfile生成的中间镜像(前提是先删除正式镜像后,才能删除中间镜像,否则会报错)
[root@docker ~]# docker image rmi `docker image ls -a | grep 'none' | awk '{print $3}'`
通过新创建的镜像启动容器
[root@docker centos6.9]# docker run -d -p 222:22 51762c7dec10
d74c1bcd77410c9812e6dbf148c4a55dcf8bd083e3787ee098aa0485344f3c73
[root@docker centos6.9]# docker container ls
ConTAINER ID   IMAGE                 COMMAND               CREATED              STATUS              PORTS                                   NAMES
d74c1bcd7741   51762c7dec10          "/usr/sbin/sshd -D"   3 seconds ago        Up 3 seconds        0.0.0.0:222->22/tcp, :::222->22/tcp     distracted_jepsen
查看连接情况
#通过ssh连接宿主机的222端口,可以连接表示容器的sshd服务正常
[C:~]$ ssh 192.168.88.101 222
Connecting to 192.168.88.101:222...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

WARNING! The remote SSH server rejected X11 forwarding request.
[root@d74c1bcd7741 ~]# 
dockerfile构建lamp
#dockerfile---lamp
# centos6.10_sshd_LAMP
#基础镜像
FROM centos:6.10
#配置本地yum源
RUN cd /etc/yum.repos.d && mkdir bak && mv *.repo bak/ && echo -e "[local]nname=linuxbasenbaseurl=ftp://192.168.88.101/centos6newngpgcheck=0nenabled=1n">/etc/yum.repos.d/local.repo && yum makecache fast && yum install -y openssh-server httpd mysql mysql-server php php-mysql
#启动sshd服务,并创建root密码
RUN /etc/init.d/sshd start && /etc/init.d/sshd stop && echo '123456' | passwd --stdin root
#初使化mysql,并创建授权用户和discuz数据库
RUN /etc/init.d/mysqld start && mysql -e "grant all on *.* to root@'%' identified by '123456';" && mysql -e "grant all on *.* to discuz@'%' identified by '123456';" && mysql -e "create database discuz charset utf8;"
RUN /etc/init.d/httpd start
#拷贝php测试文件至httpd网站目录下
COPY index.php /var/www/html/
#拷贝discuz压缩文件至httpd网站目录下并解压
ADD bbs.tar /var/www/html/
#拷贝启动脚本至一个目录,为后面CMD启动做准备
COPY init.sh /var/www/html/
#暴露sshd,mysqld,httpd端口
EXPOSE 22
EXPOSE 3306
EXPOSE 80
CMD ["/bin/bash","/var/www/html/init.sh"]

#init.sh内容如下
#!/bin/bash
/etc/init.d/mysqld start
/etc/init.d/httpd start
/usr/sbin/sshd -D
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334537.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号