华子的笔记 Help

Docker常用命令

image相关

# 新建image $ docker build --tag=helloworld . 或 $ docker build -t helloworld:tag_name .

列出本机的所有 image 文件。

$ docker image ls 或者 $ docker images

删除 image 文件

$ docker image rm <imageName> 或者 $ docker rmi <imageId>

想要删除untagged images,也就是那些id为的image的话可以用

$ docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

删除全部image

$ docker rmi $(docker images -q)

强制删除全部image

$ docker rmi -f $(docker images -q)

删除没有tag及容器的镜像

$ docker image prune

删除所有不使用的镜像(没有容器的镜像)

$ docker image prune --force --all 或者 $ docker image prune -f -a # 24小时前的 $ docker image prune -a --filter "until=24h"

container相关

# 查看所有运行或者不运行容器 $ docker container ls $ docker container ls --all $ docker container ls -aq 或者 $ docker ps -aq

停止、启动、杀死、重启一个容器

$ docker stop Name或者ID $ docker start Name或者ID $ docker kill Name或者ID $ docker restart name或者ID

停止所有的container

$ docker stop $(docker ps -a -q) 或者 $ docker stop $(docker ps -aq)

删除所有container

$ docker rm $(docker ps -a -q) 或者 $ docker rm $(docker ps -aq)

删除所有停止的容器

$ docker container prune

Docker与容器的交互

# 从容器到宿主机复制 $ docker cp tomcat:/webapps/js/text.js /home/admin $ docker cp 容器名:容器路径 宿主机路径 # 从宿主机到容器复制 $ docker cp /home/admin/text.js tomcat:/webapps/js $ docker cp 宿主路径中文件 容器名:容器路径 #获取容器ip $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' container-ID #进入一个容器 $ docker exec -it <containerID> /bin/bash #查看容器信息 $ docker inspect <containerID>

打包image并上传到dockerhub

$ docker tag friendlyhello leolu9527/get-started:part2 $ docker push leolu9527/get-started:part2

拉取一个image

$ docker pull leolu9527/get-started:part2

容器的运行 run

$ docker run -d -p 8080:80 -v /local/xx/:/app/xx/demo:ro nginx-demo $ docker run --publish 8000:8080 --detach --name bb bulletinboard:1.0 参数: - `—publish` (-p)端口映射 - `--detach` (-d)后台运行 - `--name` 容器名字 # 快速进入容器sh $ docker run -it alpine /bin/sh # 创建一个一次性的容器并进入shell $ docker run --rm -it alpine /bin/sh # 临时执行命令 $ docker run -it --rm --name php-demo php:7.4-cli php -m

其他

$ docker service ls #swarm mode $ docker swarm init #离开 $ docker swarm leave --force $ docker login #login使用的id需要登陆https://cloud.docker.com查看账户名称,不是邮箱

网络network

$ docker network ls $ docker network create test-network # 动态地将容器连接到网络 $ docker network connect test-network <containerName> # 查看网络 $ docker network inspect test-network # 断开自定义网络 $ docker network disconnect -f NETWORK CONTAINER

容器与宿主的文件拷贝

# 从容器拷贝文件到宿主机 $ docker cp mycontainer:/opt/testnew/file.txt /opt/test/ # 从宿主机拷贝文件到容器 $ docker cp /opt/test/file.txt mycontainer:/opt/testnew/ # 需要注意的是,不管容器有没有启动,拷贝命令都会生效。

文件挂载遇到的问题,docker-compose.yml中的挂载文件在构建阶段还没准备好,就是Dockerfile中的RUN命令还不能使用挂载目录中的内容,使用CMD来执行可以解决

23 May 2025