0%

Docker常用命令合集

概念介绍

  • Docker:是一个开放平台,用于开发、打包、交付(shipping)、运行应用。Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒,从而提高交付软件的速度
  • Container:容器,可理解应用运行的环境,与虚拟机不同的是,容器为保持文件体积较小,可以只包含应用运行所必须的依赖库
  • Image:容器的镜像文件,当镜像未运行时,可以对其进行分享,构建等操作;当镜像运行时,才会创造容器环境(container environment),即Container是镜像的运行环境,注意二者的区别
  • Docker Hub:公开的容器镜像仓库,可以在其他云服务提供商付费获取私人仓库
  • Docker Desktop:Docker的图形界面软件,可以在图形界面上对镜像及容器进行管理;对于支持WSL 2的Windows系统而言,可以选择WSL 2作为Docker Desktop的后端,相较于Windows Hyper-V后端性能更好

基础命令合集

Image相关命令

  • docker pull image_name:version :从Docker Hub拉取镜像
  • docker run image_name:version :运行镜像,镜像不存在则先下载镜像
    • -d :分离模式,即返回信息只有容器的ID
    • --name container_name:对创造的容器环境命名
    • 每次运行此命令都会创造新的容器环境,不同的容器环境ID不同
  • docker images:查看本地所有镜像
  • docker rmi image_name:移除镜像

Container相关命令

  • docker ps :查看正在运行的容器
    • -a:此参数同时显示未运行的容器
  • docker start container_ID:重启容器,此命令不会创造新容器,注意与docker run区分
  • docker stop container_ID:停止正在运行的容器
  • docker logs container_ID或者docker logs container_NAMES:查看容器日志
    • -f:日志流,即实时记录容器的日志并打印至命令行
    • | tail:查看尾部几条日志
  • docker exec -it container_ID /bin/bash或者docker exec -it container_NAMES /bin/bash:进入容器的命令行环境
    • exit:容器内部的命令行环境中输入此命令可返回localhost的命令行环境
  • docker rm container_ID:移除容器

高级命令合集

Port

  • docker run -p localhost_port:container_port:以此命令运行容器后,本地应用可基于localhost:localhost_port端口与容器进行通信

Docker Network

Docker Network:可以让同一网络下的容器之间依据容器名进行通信

  • docker network create net_name:创建docker network
  • docker network ls:查看所有docker network
  • docker run -e XXX=xxx -e YYY=yyy --net net_name image_name:指定容器运行时的环境变量和network

Docker Compose

Docker Compose:一次性运行多个容器,而不是在命令行中一条条开启运行。实现原理是将多条命令映射成结构化文件

  • docker-compose -f filename.yaml up:运行结构化文件中设定的所有容器,并且这些容器都运行在同一network中
  • docker-compose -f filename.yaml down:暂停结构化文件中设定的所有容器,并移除它们及其所在的network,这样也会移除数据,无法保证数据持久化

Dockerfile

Dockerfile:依据结构化文件Dockerfile构建自己的Docker镜像,即将自己编写的代码程序打包至已存在镜像中,打包需要基于某个base镜像,注意名字必须为Dockerfile

  • docker build -t image_name:tag .:构建自己的镜像,后面的.Dockerfile文件所在的路径
    • 每次修改了dockerfile,都必须重新构建镜像

Docker Volumes

Docker Volumes:于数据的长久保存,容器运行时数据储存在虚拟的文件系统中,每次重启容器文件会消失。因此通过将主机文件系统与虚拟文件系统挂载,所有文件将拷贝至主机文件系统,即可实现数据的持久化。

  • docker run -v name:virtualdirectory最推荐的挂载形式,只需为本地文件目录指定一个名字,具体路径由Docker决定,同样也可在docker compose中完成。
    • C:\ProgramData\docker\volumes:Windows系统默认的本地挂载路径
    • /var/lib/docker/volumes:Linux系统默认的本地挂载路径
    • /var/lib/docker/volumes:Mac系统默认的本地挂载路径
ENJOY THE CONTENT?! BUY ME A COFFEE.