docker搜索镜像可在 https://hub.docker.com 搜索,类似于github,按stars排序,stars上面有OFFICIAL IMAGE的是官方出的镜像,点进去可查看版本情况
#查看docker版本、信息
docker version
docker info
#搜索镜像
docker search xxx
#拉取镜像,如果不带版本号,默认下载latest(最新)版本,相当于 docker pull xxx:latest
docker pull xxx[:TAG]
eg: docker pull centos:7.9.2009
#列出本地所有的镜像
docker images
#删除镜像
docker rmi IMAGEID
eg:docker rmi 37bdd9cb0d0e
docker rmi centos:7.9.2009
#强制删除镜像
docker rmi -f IMAGEID
eg: docker rmi -f 37bdd9cb0d0e
docker rmi -f centos:7.9.2009
#删除实例(可根据实例id或name删除)
docker rm CONTAINERID/NAMES
docker rm -f CONTAINERID/NAMES
#查看当前容器列表
docker ps
#查看所有的实例(包括已停止运行的)
docker ps -a
#删除所有实例
docker rm $(docker ps -qa)
#获取容器日志
docker logs
#获取镜像的变更历史
docker history id
#查看docker实例信息
docker inspect id
#修改docker容器的时区
1、docker ps #找到要修改的容器的id
2、docker exec -it 0e5c43cc97ad bash #0e5c43cc97ad是容器的id
3、date -R #查看容器内的时区
4、cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #修改为上海的时区
5、date -R #再次查看确认一下
#创建一个新的容器并运行
docker run IMAGE:TAG
eg:
docker run centos:7.9.2009
docker run -d centos:7.9.2009 (后台运行容器并打印容器id)
docker run --name mycentos7001 centos:7.9.2009 (给实例起个名,不指定则随机)
docker run -it --name mycentos7001 centos:7.9.2009 (以交互模式启动)
docker run -it --name mycentos7001 centos:7.9.2009 /bin/bash (交互式启动并在容器内执行/bin/bash)
docker run -d centos:7.9.2009 /bin/bash -c "while true;do echo hello ;sleep 1;done" (后台启动并打印hello,模拟后台运行)
docker run -it -p 9001:8080 tomcat
-p 主机端口:docker容器端口
-P 随机分配端口
-i 交互
-t 终端
#创建一个带卷的容器
docker run -v /宿主机绝对路径:/容器内绝对路径 镜像名[:TAG]
docker run -d --name mytomcatmap1 -p 9002:8080 -v /data/tomcat/webapps/test/:/usr/local/tomcat/webapps/test:ro tomcat:8.5
#退出容器
exit (退出后容器关闭)
Ctrl+P+Q (退出后容器不关闭)
# 启动/停止/重启(根据实例id or name 启动)
docker start/stop/restart name/id
docker kill mycentos7001/id
#在运行的容器中执行命令
docker exec id/name
docker exec -d mycentos7001 touch /tmp/mydir (在后台运行的容器内创建一个文件夹)
#连接到正在运行中的容器
docker attach mycentos7001/id
################创建自己的docker镜像
#进入一个目录
cd /data
#创建文件(dockerfile1是文件名,可随意)
vim dockerfile1
#写入内容
FROM centos:7.9.2009
VOLUME ["/data/volumeContainer1", "/data/volumeContainer2"]
CMD echo "filnished ---test success----"
CMD /bin/bash
#保存退出
#执行build脚本(最后的.表示在当前目录执行)
docker build -f /data/dockerfile1 -t zmz/centos7 .
#构建容器(实例)
docker run -it --name mycentospra zmz/centos7
#继承(继承之后容器卷可以共享,父实例修改之后子实例可以看到,子实例修改之后父实例也可以)
#哪怕父实例删除之后,容器卷依然存在,子实例中的容器卷依然存在,依然可以共享
docker run -it --name mycentos01 --volumes-from mycentospra zmz/centos7
============dockerfile 命令详解
FROM 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER 镜像的维护者及邮箱
RUN 容器构建时执行的指令
EXPOSE 容器对外暴露的端口
WORKDIR 创建容器后,终端登录上来默认的工作目录
ENV 构建镜像过程中设置环境变量
ADD 将宿主机目录下的文件copy进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY 类似于ADD,copy文件和目录到镜像中,不做解压,将从构建上下文目录中<源路径>的文件或目录复制到新的一层的镜像内的<目标路径>位置
VOLUME 容器数据卷,用于数据保存和持久化工作
CMD 指定容器启动时要运行的命令
dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT 指定容器启动时要运行的命令,类似于CMD
与CMD不同的是,docker run 之后的参数会呗当作参数传递给ENTRYPOINT,之后形成新的命令组合
FORM centos:7.9.2009
ENV mypath /usr/local
WORKDIR $mydir
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $mypath
CMD echo "success============"
CMD /bin/bash
保存为dockerfile2
构建
docker build -f /data/dockerfile2 -t zmz/centos701 .
执行
docker run -it -p 9001:8080 centos701
启动tomcat(最后的ls -l为追加的命令,可替换掉tomcat:8.5的最后一行中的CMD ["catalina.sh", "run"])
docker run -it -p 9001:8080 tomcat:8.5 ls -l
dockerfile4===========================
FROM centos:7.9.2009
RUN yum install -y curl
CMD ["curl", "-s", "http://myip.ipip.net"]
docker build -f /data/dockerfile4 -t searchip1 .
docker run searchip1 #执行成功,打印ip
docker run searchip1 -i #则报错
dockerfile5===========================
FROM centos:7.9.2009
RUN yum install -y curl
ENTRYPOINT ["curl", "-s", "http://myip.ipip.net"]
docker build -f /data/dockerfile5 -t searchip2 .
docker run searchip2 #执行成功,打印ip
docker run searchip2 -i #执行成功,打印ip以及请求头
docker 常用命令
于 2021-03-10 20:38:44 首次发布
本文详细列举了Docker的常用命令,包括镜像管理、容器操作、网络配置等核心知识点,旨在帮助运维人员快速查找和使用Docker进行日常运维工作。
1698

被折叠的 条评论
为什么被折叠?



