docker的使用

181 阅读1分钟

docker的使用

1、常用命令

#查看所有的镜像
docker images
#查看所有的容器
docker ps -a
#查看所有运行中的容器
docker ps 
#查看容器的日志
docker logs 容器id(或容器名)

运行(创建)容器:

docker run -e "env1=value1" -e "env2=value2" -d

参数意义:

  • -e:配置运行时的环境变量(也可以在dockerfile中配置)
  • -d:后台运行容器并返回容器ID
  • --name:为容器指定名字
  • -i:表示以交互模式运行容器(让容器的标准输入保持打开)
  • -t:为容器重新分配一个伪输入终端
  • -p: 做一个端口映射
  • -v: 宿主机和容器的文件挂载
#停止容器
docker stop 容器ID/容器名
#一次性停止所有容器
docker stop $(docker ps -a -q)
#运行容器
docker start 容器ID/容器名
#删除容器
docker rm 容器ID/容器名  (-f 强制删除)
#删除本地镜像
docker rmi 镜像ID   (-f 强制删除)
#重启容器
docker restart 容器ID
#查看容器的向详细信息
docker inspect 容器ID
#进入容器
docker exec -it 容器ID /bin/bash     (exit推出容器)

容器和宿主机的文件复制和挂载

#从宿主机复制到容器
docker cp home/123.txt 容器名/容器ID:容器路径
#从容器复制到宿主机
docker cp 容器ID/容器名:容器路径 宿主机路径
#宿主机文件夹挂载到容器
docekr run -itd -v /home/mrj/:宿主机路径 镜像ID

构建自定义镜像:

1.基于docker commit 制作镜像

2.基于dockerFile制作镜像(主流方式)

构建镜像主要点:

1.对容器的任何改动都是发生再容器层

2.容器层可读可写,镜像层只读

DockerFile基础命令:

  • FROM

    • 基于哪个镜像
  • MAINTAINER

    • 注明作者
  • COPY

    • 复制文件进入镜像
  • ADD

    • 复制文件进入镜像(如果是tar.gz文件会解压)
  • WORKDIR

    • 指定工作目录,路径不存在则创建目录
  • ENV

    • 设置环境变量
  • EXPOSE

    • 暴露容器接口
  • RUN

    • 构建镜像的时候执行,作用在镜像层面
  • ENTRYPOINT

    • 在容器启动的时候执行,作用在容器层,当一个dockerFile文件中有多条的时候只执行最后一条
  • CMD

    • 同上,容器启动的时候默认执行的命令或参数,可以被修改
  • VOLUME

    • 注意,dockerfile里面设置volume是无法修改宿主机的路径的
  • 命令格式:

    • shell格式:RUN yum install -y net-tools
    • exec格式: RUN ["yum","install","-y","net-tools"]

构建容器命令

docker build -t mycentos:8 .      //这里.代表docekrFile在当前路径,mycentos:8是容器名以及版本

构建java镜像实例:

FROM centos:7 
ADD jdk-8u211-linux-x64.tar.gz /usr/local 
RUN mv /usr/local/jdk1.8.0_211 /usr/local/jdk 
ENV JAVA_HOME=/usr/local/jdk 
ENV JRE_HOME=$JAVA_HOME/jre 
ENV CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 
ADD apache-tomcat-8.5.35.tar.gz /usr/local 
RUN  mv /usr/local/apache-tomcat-8.5.35  /usr/local/tomcat 
EXPOSE 8080 
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]

构建一个容器:

docker run -itd -p 80:8080 -v /root/test/ROOT:/usr/local/tomcat/webapps/ROOT  mycentos:8 /bin/bash

--volume-from:实现容器和容器之间的数据共享

eg:

创建nginx1

docker run -itd -p 8080:80 -v /usr/local/nginx/html:/usr/local/nginx/html --name nginx1 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

创建nginx2

docker run -itd -p 8081:80 --volumes-from nginx1 --name nginx2 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

创建nginx3

docker run -itd -p 8082:80 --volumes-from nginx1 --name nginx3 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

列举了一些常用的docker命令,更多的可以看docker --help了解,或者docekr 命令 --help。