docker 、dockerfile常用命令汇总

  • docker inspect ID 查看镜像的javahome
    linux命令 uname -r 查看内核版本号 cat /etc/redhat-rele 查看centos版本号
    docker命令 ps -ef|grep docker 查看镜像加速是否生效
    帮助命令 docker version docker info docker --help

  • 镜像命令 docker images 列出本地主机上镜像
    -a 列出本地所有镜像
    -q只显示镜像ID
    –digests 显示镜像摘要信息
    –no-trunc 显示完整镜像ID

===================
docker search 镜像名称
-s 30 镜像名称 start数超过三十的镜像 docker search -filter=stars=30新版使用
-s 30 --no-trunc 镜像名称 显示完整的摘要信息
下载使用 docker pull 镜像名称 等价于 docker pull 镜像名称:latest 默认最新版本

删除镜像
docker rmi 镜像名称:版本号 不写版本号默认删除latest
docker rmi -f 镜像名称:版本号 强制删除
docker rmi -f 镜像ID 删除单个 同上
docker rmi -f 镜像名称:TAG 镜像名称:TAG 不写TAG默认latest
docker rmi -f $(docker images -qa) 删除全部镜像


容器命令
1、docker run -it 镜像ID i:交互 t:伪终端 进入容器 --name:自定义名称
2、docker run -it --name 别名 容器名称
3、docker ps 列出所有正在运行的容器 -l 上一个运行的容器 -a 当前运行的和历史运行过的左右容器 -n 3 上三次运行的 -q返回运行容器ID
4、exit 停止并退出容器
5、Ctrl+P+Q 不停止容器退出
6、docker start 容器名称/容器ID 启动容器
7、docker restart 容器名称/容器ID 重启容器
8、docker stop 容器名称/容器ID 停止容器
9、docker kill 容器名称/容器ID 强制停止容器
10、docker rm 容器ID 删除已停止的容器
11、docker rm -f $(docker ps -a -q) 一次删除多个容器

=======================
重要命令
docker run -d 容器名称 启动守护式容器
docker logs -f -t --tail 容器ID 查看容器日志
docker top 容器Id 查看容器内运行进程
docker inspect 容器ID 查看容器内的细节

df -hT 查看挂载目录

docker exec -it 容器ID bashShell 是在容器中打开新的终端 并且可以启动新的进程
docker attach 容器ID 直接容器进入启动命令的终端 不会启动新的进程
docker cp 容器id:容器内路径 目的主机路径

===========================================
容器卷
实现主机跟容器同步

dockerfile常用命令

scratch 祖先镜像
FROM 基础镜像 当前镜像是基于哪个镜像的
MAINTAINER 镜像维护者的姓名和邮箱
RUN 容器构建时候需要运行的命令
EXPOSE 当前容器对外暴漏的端口
WORKDIR 指定在创建容器后 终端默认登陆的进来工作目录 一个落脚点
ENV 用来在构建镜像中设置环境变量
ADD 拷贝+解压缩 将宿主机目录下的文件拷贝至镜像中ADD命令会自动处理URl和解压缩tar包
COPY 拷贝 源路径 / 目标路径
VOLUME 数据容器卷 保存数据和持久化工作
CMD 指定一个容器启动时要运行的命令 可以有多个 但是只有最后一个生效 CMD会被docker run之后的参数替换
ENTRYPOINT 指定一个容器启动时要运行的命令 追加 同上比较
ONBUILD 当构建一个被继承的docker file是运行命令 父镜像在被子继承后父镜像的pnbuild被处罚

docker history 镜像ID 查看dockerfile详细信息
docker run -it -p 7777:8080 tomcat 启动tomcat 并对外开放7777端口
docker build -f /mydocker/dockerfile -t mycentos:1.3 .

当前路径直接 docker build dockerfile -t 镜像名称 . 后者 docker build -t 镜像名称 .

dockerfile脚本案例练习

FROM centos
MAINTAINER zzyyz#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
COPY c.txt /usr/local/cincontainer.txt
#把java与tomcat添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.8.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_171
ENVCLASSPATHJAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8
ENV PATH PATH:JAVA_HOME/bin:CATALINA_HOME/lib:CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat

#ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh" ]
#CMD ["/usr/local/apache-tomcat-9.0.8/bin/catalina.sh",“run”]
CMD /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.8/bin/logs/catalina.out

docker exec -it MySQL运行成功后的容器ID /bin/bash

Docker挂载主机目录Docker访问出现cannot open directory Permission denied
解决办法:在挂载目录后多加一个–privileged=true参数即可

总结:本文章为学习docker时所总结相关命令笔记,只是记录了部分,里面参杂了一些linux命令,我觉得学docker要会linux基础,不然上手很难,也有人说过不会linux也行,我觉得对方一定是大神。文章版式不是很好看,但是知识点还是不少的

座右铭:控制欲望 脚踏实地