Docker常用命令

docker常用命令

# 列出所有的容器ID
docker ps -aq
# 停止所有的容器
docker stop $(docker ps -aq)
# 删除所有的容器
docker rm $(docker ps -aq)
# 删除容器,-f 运行中也能删除
docker rm -f test-nginx
# 删除所有的镜像
docker rmi $(docker images -q)
# 删除untagged images
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
# 复制容器内文件到宿主机
docker container cp -a id(name):/container-path /to-path
# 复制宿主机文件到容器内
docker cp id(name):/container-path to-path
# 查看日志
docker logs -f id(name)
# 查看容器详细信息 ip等
docker inspect test-nginx
# 将镜像保存为tar包
docker save 镜像id > /home/images/test.tar
docker save -o nginx.tar nginx:latest
# 加载为镜像
docker load -i test.tar
# 这时候镜像是没有repository 和 tag 的 给镜像打标签
docker tag 镜像id 镜像的repository:tag

docker中的BusyBox

快速启动一个 BusyBox 容器,用来测试容器网络、验证文件挂载、执行临时命令。

# 启动交互式 BusyBox 容器(进入shell) 启动进入
docker run -it --rm busybox
docker run --rm busybox ping -c 3 www.baidu.com

# 用 BusyBox 临时挂载到已有容器的命名空间,排查问题(比如容器内缺少某些命令时)
## 调试名为 "my-app" 的容器(共享网络、PID、文件系统)
docker run -it --rm \
  --network container:my-app \
  --pid container:my-app \
  --volumes-from my-app \
  busybox
## 挂载busybox到test-nginx容器
docker run -it --name test-nginx --link test-nginx busybox sh

# 进入后可查看 my-app 容器的进程、网络、文件
ps aux  # 看到 my-app 的进程
ls /app # 访问 my-app 的挂载目录

Dockerfile

  • 用ADD不用COPY,ADD会自动解压

docker-compose常用命令

# 启动所有服务
docker-compose up
# 在后台所有启动服务
docker-compose up -d
# -f 指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d
# 列出项目中目前的所有容器
docker-compose ps
# 停止正在运行的容器,可以通过docker-compose start 再次启动
docker-compose stop
#停用移除所有容器以及网络相关
docker-compose down
# 停止并删除容器+数据卷(谨慎使用,会清空数据)
docker-compose down -v
#启动已经存在的服务容器
docker-compose start