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。