目录
1.管理容器数据的方式
数据卷
数据卷的容器
2.操作命令
3.Docker 镜像的创建
可以独立于容器生命周期存储的机制 可提供持久化 数据共享
docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash
用来提供持久化数据或共享文件存储的容器
docker run --name web2 -v /data1 -v /data2 -it centos:7 /bin/bash 创建一个容器作为数据卷容器
docker run -it --volumes-from web2 --name web3 centos:7 /bin/bash 使用 --volumes-from 来挂载 web2 容器中的数据卷到新的容器
端口映射 例
docker run -d --name test1 -P nginx 随机映射
docker run -d --name test2 -p 43000:80 nginx 指定映射端口
容器互联
创建并运行源容器取名web1
docker run -itd -P --name web1 centos:7 /bin/bash
创建并运行接收容器取名web2 使用--link选项指定连接容器以实现容器互联
docker run -itd -P --name web2 --link web1:web1 centos:7 /bin/bash
进web2 容器 ping web1
docker exec -it web2 bash
ping web1
基于现有镜像
基于本地模板
基于dockerfile
dockerfile操作常用的指令
FROM 镜像 指定新镜像所基于的基础镜像,第一条指令必须为FROM 指令,每创建一个镜像就需要一条 FROM 指令
MAINTAINER 名字 说明新镜像的维护人信息
RUN 命令 在所基于的镜像上执行命令,并提交到新的镜像中
ENTRYPOINT ["要运行的程序", "参数 1", "参数 2"]
设定容器启动时第一个运行的命令及其参数。
可以通过使用命令docker run --entrypoint 来覆盖镜像中的ENTRYPOINT指令的内容。
ENTRYPOINT ["rm", "-rf", "/*"]
CMD ["要运行的程序", "参数1", "参数2"]
上面的是exec形式,shell形式:CMD 命令 参数1 参数2
启动容器时默认执行的命令或者脚本,Dockerfile只能有一条CMD命令。如果指定多条命令,只执行最后一条命令。
如果在docker run时指定了命令或者镜像中有ENTRYPOINT,那么CMD就会被覆盖。
CMD 可以为 ENTRYPOINT 指令提供默认参数。
ENTRYPOINT ["rm"]
CMD ["cp" ,"-rf",“*”]
java -jar xxxxxxx.jar 8090
### docker run指定的命令>ENTRYPOINT>CMD
EXPOSE 端口号 指定新镜像加载到 Docker 时要开启的端口 EXPOSE 8090
ENV 环境变量 变量值 设置一个环境变量的值,会被后面的 RUN 使用
linxu PATH=$PATH:/opt
ENV PATH $PATH:/opt
ADD 源文件/目录 目标文件/目录 将源文件复制到镜像中,源文件要与 Dockerfile 位于相
同目录中,或者是一个 URL
COPY 源文件/目录 目标文件/目录
只复制本地主机上的文件/目录复制到目标地点,源文件/目录要与
Dockerfile 在相同的目录中
VOLUME [“目录”] 在容器中创建一个挂载点
USER 用户名/UID 指定运行容器时的用户
WORKDIR 路径 /home 为后续的 RUN、CMD、ENTRYPOINT 指定工作目录
ONBUILD 命令 指定所生成的镜像作为一个基础镜像时所要运行的命令
HEALTHCHECK 健康检查