docker常用命令总结二
一、commit命令
docker commit 命令可以提交镜像形成一个新的副本,用法如下
docker commit -m ="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]`
测试:
#启动一个默认的tomcat镜像(10)
#发现这个默认的tomcat镜像中没有webapps应用
#(官方的镜像默认webapps中没有文件),
#拷贝基本文件进去(cp -r webapps.dist/* webapps)
#commit修改过的版本
docker commit -a="XXXXX" -m="add base webapps" 85c829cb45d2 tomcat10:1.0
二、docker容器卷
可以实现容器的持久化和同步操作,使容器间的数据实现共享。
方式一:使用命令挂载 -v
docker run -it -v /home/test:/home centos /bin/bash
查看挂载情况
docker inspect 容器id
docker volume --参数(卷相关命名)
匿名挂载:
即不指定挂载到主机上的路径,只指定容器内部需要挂载的目录。
docker run -d -P --name nginx01 -v /ect/ngnix ngnix
具名挂载: 给挂载位置添加名字,即具名挂载。
docker run -d -P --name nginx02 -v juming-ngnix:/etc/ngnix ngnix
所有的docker容器内的卷,在没有指定目录的情况下都在
/var/lib/docker/volumes/xxx/_dat
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径::容器内路径 #指定路径挂载
-v 容器内路径:ro rw 改变读写权限
ro read-only 只读 容器内部将无法操作
rw read-write 可读可写
多个容器之间通过数据卷容器挂载实现数据共享示例如下:
docker run -it --name docker02 --volumes-from docker01
三、Dockerfile
dockerfile是用来构建docker镜像文件的
构建步骤:
1、 编写一个dockerfile文件
2、 docker build 构建成为一个镜像
3、 docker run 运行一个镜像
4、 docker push 发布镜像(DockerHub、阿里云镜像仓库)
简单的dockerfile文件中的内容如下 指令(大写) 参数
FROM centos
VOLUME["volume01","volume02"]
CMD echo"----------end-----------"
CMD /bin/bash
dockerfile基本指令:
FROM 指定基础镜像,
MAINTAINER 指定维护者信息(镜像是谁写的 姓名+邮箱)
RUN 镜像构建时需要运行的命令
ADD COPY文件,会自动解压(添加内容,每添加一次就是一层)
WORKDIR 镜像的工作目录
VOLUME 挂载的目录
EXPOSE 指定对外端口
CMD 指定容器启动的时候要运行的命令(只有最后一个会生效,可被替换)
ENTRYPOINT 指定容器启动的时候要运行的命令(可以追加命令)
ONBUILD 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令
COPY 类型ADD命令,将我们的文件拷贝到镜像中
ENV 构建的时候设置环境变量
docker history 镜像id 可以查看镜像的历史信息
CMD 命令与 ENTRYPOINT 的区别
CMD会被新输入的命令替换,ENTRYPOINT会追加新输入的命令。
测试制作自己的镜像-tomcat
- 准备镜像文件tomcat压缩包,jdk压缩包
- Dockerfile的编写
- 构建镜像
dockerfile如下
FROM centos
MAINTAINET chenfeng<672235206@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.57.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORK $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.57
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.57
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.57/bin/startup.sh && tail -f /url/local/apache-tomcat-8.5.57/bin/logs/ca
talina.out
构建镜像
注意最后一个点不能忘记
docker build -t cftomcat .
- 启动镜像
- 在本地挂载目录下发布项目
- 发布镜像到远程仓库
镜像发布
- 发布到DockerHub
- 登录DockerHub
- docker login -u -p
- docker push 发布镜像
(发布到阿里云服务器上详见阿里操作文档)