概念介绍
- 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 networkdocker network ls
:查看所有docker networkdocker 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系统默认的本地挂载路径