Skip to content

Docker使用文档

Docker 简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 的优势包括:

  • 轻量级:Docker 容器的大小仅几十 MB,相比虚拟机镜像大小几百 MB,节省了硬盘空间。
  • 易于使用:Docker 容器通过 Docker 引擎来运行,用户可以直接在宿主机上执行 Docker 命令,无需再学习复杂的虚拟化技术。
  • 弹性可伸缩:Docker 容器可以动态扩容或缩容,按需提供服务,非常适合动态环境中快速部署应用。
  • 便携性:Docker 容器可以很方便地迁移到其他机器上运行,使得应用的部署和运行环境一致性大大提高。
  • 安全:Docker 容器提供的安全机制使得应用的运行环境更加安全。

Docker 常用命令

1.docker通过镜像名称获取镜像id:

bash
   docker images -q --filter reference=my_image_name

2. docker获取启动容器镜像名称

bash
  docker inspect --format='{{.Id}}' my_container_name

3. 清理悬空镜像

bash
  docker image ls -f dangling=true -q | xargs docker image rm

4. 清理所有未使用的镜像

bash
  docker image prune -a

5. 清理所有未使用的容器

bash
  docker container prune

6. 清理所有未使用的镜像和容器

bash
  docker system prune -a

7. 停止所有运行中的容器

bash
  docker stop $(docker ps -a -q)

8. 删除所有停止的容器

bash
  docker rm $(docker ps -a -q)

9. 启动容器

bash
  docker start my_container_name

10. 停止容器

bash
  docker stop my_container_name

11. 重启容器

bash
  docker restart my_container_name

12. 进入容器

bash
  docker exec -it my_container_name /bin/bash

13. 导出容器

bash
  docker export my_container_name > my_container_name.tar

14. 导入容器

bash
  cat my_container_name.tar | docker import - my_image_name

15. 列出所有容器

bash
  docker ps -a

16. 列出所有镜像

bash
  docker images

17. 删除镜像

bash
  docker rmi my_image_name

18. 删除容器

bash
  docker rm my_container_name

19. 登录镜像仓库

bash
  docker login registry.example.com

20. 推送镜像到镜像仓库

bash
  docker push registry.example.com/my_image_name

21. 拉取镜像

bash
  docker pull registry.example.com/my_image_name

22. 运行容器

bash
  docker run -d --name my_container_name -p 80:80 my_image_name

23. 构建镜像

bash
  docker build -t my_image_name .

24. 映射容器端口到主机

bash
  docker run -d -p 80:80 --name my_container_name my_image_name

25. 映射容器目录到主机

bash
  docker run -d -v /home/user/my_folder:/var/www/html --name my_container_name my_image_name

26. 容器日志

bash
  docker logs my_container_name

27. 容器内执行命令

bash
  docker exec my_container_name ls -l

28. 容器内安装软件

bash
  docker exec -it my_container_name apt-get update && apt-get install -y nginx

29. 容器内创建文件

bash
  docker exec -it my_container_name touch /var/www/html/index.html

30. 容器内编辑文件

bash
  docker exec -it my_container_name nano /var/www/html/index.html

31. 容器内查看文件

bash
  docker exec -it my_container_name cat /var/www/html/index.html

32. 容器内端口映射

bash
  docker run -d -p 80:80 --name my_container_name my_image_name

33. 容器内目录映射

bash
  docker run -d -v /home/user/my_folder:/var/www/html --name my_container_name my_image_name

34. 容器内环境变量

bash
  docker run -d -e MY_ENV_VAR=my_value --name my_container_name my_image_name

35. 容器内运行脚本

bash
  docker run -d --name my_container_name my_image_name /bin/bash -c "chmod +x /start.sh && /start.sh"

36. 容器内运行后台任务

bash
  docker run -d --name my_container_name my_image_name /bin/bash -c "tail -f /var/log/nginx/access.log"

37. 容器内运行交互式命令

bash
  docker run -it --name my_container_name my_image_name /bin/bash

38. 容器内运行命令

bash
  docker run --rm --name my_container_name my_image_name ls -l

39. 清理构建缓存

TIP

从 Docker 17.07 版本开始,Docker 引入了一个新的命令专门用于清理构建缓存
bash
  docker builder prune

TIP

这个命令会删除所有未被使用的构建缓存,释放空间。如果你想要更精细的控制,比如删除一定时间之前的缓存,可以使用 --filter 参数,例如:

bash
   # 删除 24 小时前创建的所有构建缓存。
  docker builder prune --filter until=24h

Linux Docker 使用 host.docker.internal 域名(需配置)

在 Linux Docker 中默认不支持 host.docker.internal,但可以通过以下方式手动配置:

步骤:

  1. 启动容器时添加 DNS 映射:
    bash
    docker run --add-host=host.docker.internal:host-gateway your_image
  2. 在容器内使用域名访问宿主机:
    bash
    curl http://host.docker.internal:8080

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

powered by ayyyya, with additional features: