Docker:基本命令 Docker的常用命令 帮助命令1 2 3 docker version #查看版本 docker inf #显示系统信息 docker 命令 --help #万能命令
Docker的常用命令 帮助命令1 2 3 docker version #查看版本 docker inf #显示系统信息 docker 命令 --help #万能命令
镜像命令docker images查看所有本地的主机上的镜像选项 说明 -a 或 --all显示所有镜像(默认只显示最终镜像,隐藏中间镜像) -q 或 --quiet只显示镜像的 ID,不显示其它信息
docker search搜索镜像选项 作用 -f 或 --filter根据条件过滤结果,例如 --filter stars=10 只显示点赞数大于 10 的镜像 --format使用 Go 模板美化输出结果,例如输出成表格或 JSON --limit设置最大返回条数,比如 --limit 5 最多返回 5 个镜像 --no-trunc不截断输出(比如镜像描述不会被省略)
docker pull 镜像名[:tag]下载镜像^55fc23
选项 说明 -a, --all-tags拉取仓库中所有 tag 的镜像,docker pull mysql:5.7 指定版本 --disable-content-trust跳过镜像验证(默认是 true,意思是跳过,不做签名验证) --platform string指定平台,比如拉 ARM 架构的镜像:--platform linux/arm64 -q, --quiet安静模式,不显示下载进度条,只显示镜像 ID
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 root@zheep:~# docker pull mysql Using default tag: latest # 如果不写tag,默认就是latest latest: Pulling from library/mysql 72a69066d2fe: Pull complete # 分层下载,docker iamge的核心联合文件系统 93619dbc5b36: Pull complete 99da31dd6142: Pull complete 626033c43d70: Pull complete ... Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738 # 签名 bd5b8e7709 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest # 真实地址 # 等价于 docker pull mysql docker pul1 docker.io/library/mysql:1atest
docker rmi删除镜像1 2 3 docker rmi -f 容器id # 删除指定镜像 docker rmi -f 容器id 容器id 容器id 容器id # 删除多个镜像 docker rmi -f $(docker images -aq) # 删除全部的镜像
容器命令说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
新建容器并启动1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 docker run [可选参数] image# 参数说明 -name="Name" 容器名字tomcat01 tomcat02,用来区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 -p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 -P 随机指定端口
# 测试 并进入容器 root@iZf8z4m0zzs3eoirsd64fvZ:~# docker run -it centos /bin/bash [root@061d6401141d /]# ls # 查看容器内的CentOS bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@061d6401141d /]# exit exit
列出所有运行中的容器1 2 3 4 5 6 7 8 9 10 11 12 #docker ps命令 #列出当前正在运行的容器 -a #列出当前正在运行的容器+带出历史运行过的容器 -n=? #显示最近创建的容器 -q #只显示容器的编号 root@iZf8z4m0zzs3eoirsd64fvZ:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES root@iZf8z4m0zzs3eoirsd64fvZ:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 061d6401141d centos "/bin/bash" 17 minutes ago Exited (0) 7 minutes ago frosty_zhukovsky df72a233637c hello-world "/hello" 2 hours ago Exited (0) 2 hours ago recursing_proskuriakova
退出容器1 2 exit #直接容器停车并退出 Ctr1 + P + Q #容器不停止退出
删除容器1 2 3 docker rm 容器id # 删除指定容器,强制删除 -f docker rm -f $(docker ps -aq) # 删除全部的容器 docker ps -a -q|xargs docker rm # 删除全部的容器
启动和停止容器的操作1 2 3 4 docker start 容器id docker restart 容器id docker stop 容器id docker kill 容器id
常用其他命令 后台启动容器1 2 3 4 docker run -d centos# 问题docker ps,发现centos停止了 # 常见的坑:docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,自动停止 # nginx,容器启动后,发现自己没有提供服务,就会立刻停止
查看日志命令1 2 3 4 5 6 7 8 9 10 11 docker logs -t # 加时间 -f # 持续打印 -tf --tail 条数 容器 #显示指定条数日志 -tf 容器 #显示全部日志 # 自己编写一段she1l脚本 docker run -d centos /bin/sh -c "while true;do echo zheep;sleep 1;done" root@iZf8z4m0zzs3eoirsd64fvZ:~# docker logs -f -t --tail 10 e0817c5740be 2025-05-12T09:17:53.276619691Z zheep 2025-05-12T09:17:54.278736383Z zheep ...
查看容器中进程命令1 2 3 4 docker top 容器id UID PID PPID C STIME TTY TIME CMDroot 2754169 2754145 0 17:17 ? 00:00:00 /bin/sh -c while true ;do echo zheep;sleep 1;done
查看镜像的元数据 进入当前正在运行的容器docker exec -it 容器id bashShell1 2 3 4 5 root@iZf8z4m0zzs3eoirsd64fvZ:~# docker exec -it e0817c5740be /bin/bash # 让你进入容器内部并获得一个 bash 交互式命令行界面 [root@e0817c5740be /]# ls -a . .dockerenv dev home lib64 media opt root sbin sys usr .. bin etc lib lost+found mnt proc run srv tmp var
docker attach 容器id1 2 root@iZf8z4m0zzs3eoirsd64fvZ :~ # docker attach e0817c5740be 当前正在执行的代码...
区别1 2 docker exec -it 容器id bashShell # 进入容器后开启一个新的终端,可以在里面操作(常用) docker attach 容器id # 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机1 2 3 docker cp 容器id :容器内路径 目的地的主机路径 容器可以直接退出,因为数据依然存在# 拷贝是一个手动过程,未来我们使用-V卷的技术,可以实现,自动同步fhome/home
小结1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 # 容器生命周期管理 run # 创建一个新的容器并运行一个命令 create # 创建一个新的容器,但不启动 start # 启动一个已停止的容器 restart # 重启一个运行中的容器 stop # 停止一个运行中的容器 pause # 暂停容器中的所有进程 unpause # 取消暂停容器 kill # 强制终止容器 rm # 删除一个或多个容器 wait # 阻塞直到容器停止,然后输出其退出码 # 容器交互与调试 exec # 在已有容器中执行命令 attach # 连接到一个运行中的容器 logs # 获取容器的日志 top # 查看容器中运行的进程信息 inspect # 获取容器或镜像的详细信息 port # 查看容器端口映射 diff # 查看容器文件系统变化 events # 实时获取容器事件
# 镜像管理 build # 通过Dockerfile构建镜像 images # 列出本地镜像 rmi # 删除一个或多个镜像 pull # 从镜像仓库拉取镜像 push # 将镜像推送到镜像仓库 tag # 给镜像打标签 history # 查看镜像的创建历史
# 镜像导入导出 save # 保存镜像为tar包 load # 从tar包加载镜像 export # 导出容器文件系统为tar包 import # 从tar包创建镜像
# 文件拷贝 cp # 从容器中拷贝文件到宿主机或相反
# Docker Registry 登录操作 login # 登录到Docker镜像仓库 logout # 登出镜像仓库 search # 在Docker Hub中搜索镜像
# 系统信息 info # 显示Docker系统信息 version # 显示Docker版本信息 stats # 查看cpu状态
实践 Docker安装nginx 1. 搜索镜像 2. 下载镜像 3. 运行测试1 2 3 4 5 6 7 8 9 10 docker run -d --name demo-nginx -p 1145:80 nginx:latest 暴露端口:容器内端口 curl localhost:1145# Welcome to nginx! root@iZf8z4m0zzs3eoirsd64fvZ:~# docker exec -it demo-nginx /bin/bash root@b1aeedc7b8f3:/# whereis nginx nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx# 思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分的麻烦,我要是可以在容器外部提供一个映射路径,达到在容器外部修改文件,容器内部就可以自动修改? -v # 数据卷
Docker安装tomcat…省略
1 2 3 4 5 6 7 8 9 10 #官方的使用 docker run -it --rm tomcat:9.0 --rm # 关闭后删除该容器(一般用于测试) root@iZf8z4m0zzs3eoirsd64fvZ:~# docker run -d -p 1234:8080 --name tomcat-dome root@iZf8z4m0zzs3eoirsd64fvZ:~# docker exec -it tomcat-demo /bin/bash root@a31230fef10b:/usr/local/tomcat# cd webapps root@a31230fef10b:/usr/local/tomcat/webapps# ls -a . ..# 然后发现 linux命令少了,没有webapps,这是阿里云镜像的问题,默认最小镜像,排除了不必要的东西 # 思考问题:我们以后要部署项目,如果每次都要进入容器是不是我要是可以个映射路径,webapps我们在外部放置项目,就自动同步到内部就好了!
Docker安装es + kibana1 2 3 4 5 6 7 8 9 10 11 12 13 14 # es十分的耗内存 # es的数据一般需要放置到安全目录 挂载 # -net somenetwork ? 网络配置 # 启动elasticsearch docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2# 启动了linux就卡住了,使用dockerstats查看cpu的状态
# 低内存服务器如何运行高内存容器 # 我们需要增加内存限制,修改配置文件 -e 环境 配置修改
dockerrun -d --name elasticsearch -p 9200:9200 -p9300:9300 -e "discovery.type=sing1e-node" -e ES_JAVA_OPTS=-Xms64m -Xmx512m"e1asticsearch:7.6.2 " # 使用kibana连接es?思考网络如果才能连接过去!
可视化portainer(先用这个) Rancher(CI/CD再用) 什么portainer?Docker图形化界面管理工具!提供一个后台面板供我们操作!
1 docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer