Docker----镜像介绍

镜像操作命令

FROM镜像指定镜像所基于的镜像,第一条命令必须是FROM指令,没创建一个镜像就要一条FROM指令
MAINTAINER名字说明镜像信息
CMD[“要运行的程序”,“参数1”,“参数2”]容器启动时默认允许的命令或者脚本,该指令只能有一条,如果有多条则只有最后一条被执行
EXPOSE端口号指定镜像加载到docker是要开启的端口
ENV环境变量 变量值 设置环境变量
ADD源文件/目录 目标文件/目录 将源文件复制到目标文件,如果是压缩包则可以直接解压,可以复制跨界点数据
COPY 源文件/目录 目标文件/目录将宿主机指定的文件复制到image层
VOLUME[“目录”]在容器中创建一个挂载点
USER用户名/UID指定允许容器时的用户
WORKDIR 路径相当于cd命令,路径跳转
ONBUILD 命令指定所生成的镜像为基础镜像时要运行的命令
HEALTHCHECK健康检查

创建tomcat镜像

[root@docker ~]# mkdir tomcat  #创建工作目录
[root@docker ~]# cd tomcat/    #切换目录
[root@docker tomcat]# ls       #上传jdk、tomcat进入此目录
apache-tomcat-9.0.16.tar.gz   jdk-8u91-linux-x64.tar.gz
[root@docker tomcat]# vim Dockerfile   #写Dokcerfile文件
FROM centos:7   #基于基础镜像
MAINTAINER this is tomcat image   #用户信息
ADD jdk-8u91-linux-x64.tar.gz /usr/local/  #复制到指定目录并解压
WORKDIR /usr/local/     #指定工作目录
RUN mv jdk1.8.0_91 /usr/local/java   #改名
ENV JAVA_HOME /usr/local/java    
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH $JAVA_HOME/bin:$PATH
ADD apache-tomcat-9.0.16.tar.gz /usr/local/  
RUN mv apache-tomcat-9.0.16 /usr/local/tomcat 
WORKDIR /usr/local/tomcat/bin   #指定工作目录
EXPOSE 8080   #暴露端口
ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out   #运行tomcat并查看日志(因为执行完主进程后,容器就会退出,所以运行一个主进程使其可以以守护进程的形式在后台运行)

在这里插入图片描述
在这里插入图片描述

Nginx镜像

[root@docker ~]# mkdir docker
[root@docker ~]# mkdir nginx && cd nginx/			#拷贝nginx-1.12.2.tar.gz包到目录下
[root@docker nginx]# vim Dockerfile
FROM centos:7							##基于基础环境
MAINTAINER this is nginx image			##镜像信息
RUN yum -y update && yum -y install pcre-devel zlib-devel gcc gcc-c++ make	&> /dev/nulll #依赖环境
RUN useradd -M -s /sbin/nologin nginx			##创建nginx用户
ADD nginx-1.12.2.tar.gz /usr/local/src			##解压包
WORKDIR /usr/local/src
WORKDIR nginx-1.12.2	
RUN ./configure --prefix=/usr/local/nginx \		##指定工作目录
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install &> /dev/null
ENV PATH /usr/local/nginx/sbin:$PATH			##设置环境变量
EXPOSE 80										##暴露端口
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
CMD nginx										##执行默认命令开启nginx
####CMDENTRYPOINT的区别
1ENRYPOINT指开启容器前镜像就已经执行了括号内的命令
2CMD是开启容器时,要执行的指令,设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换
3、基于Dockerfile内有CMD或者ENTRYPOINT创建镜像时,docker run 后面就不要加指令(/bin/bash)了,会覆盖掉Dockerfile中的指令或者语法报错

[root@docker nginx]# docker build -f Dockerfile -t nginx:test .		
####基于dockerfile文件构建镜像,可以另开一个终端执行“watch -n 1 docker ps -a”可以看到,dockerfile中每条命令都会生成一个镜像,生成一个容器执行,表现了dockerfile的镜像分层原理
[root@docker nginx]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        test      c94e53da8234   13 seconds ago   539MB
<none>       <none>    6bdbbd0cb566   2 minutes ago    524MB
centos       7         8652b9f0cb4c   9 months ago     204MB
[root@docker nginx]# docker run -d -P nginx:test 
291c42a12debf73303cee4fd258cf91eb832aec8cfa45f5b1b9d60403cf216dd
[root@docker nginx]# docker ps -a
CONTAINER ID   IMAGE        COMMAND              CREATED              STATUS              PORTS                                     NAMES
291c42a12deb   nginx:test   "/bin/sh -c nginx"   About a minute ago   Up About a minute   0.0.0.0:49153->80/tcp, :::49153->80/tcp   zen_mendel

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值