docker命令

823 阅读6分钟

如果运行的服务在docker中运行,想要访问的话要进入容器中,然后才能访问

容器相当于是镜像实例化出来的对象【相互关系解释】

各容器通过服务器内网ip进行互相沟通

命令效果
docker images查看docker中所有镜像/可加 -f 使用过滤器/可加 -q 只输出镜像ID
docker images 镜像名查看docker中所有指定名字的镜像
docker images 镜像名:tag名查看docker中所有指定名字和tag的镜像
docker save 镜像名:镜像版本号 -o 镜像文件名保存docker中的镜像文件到文件目录
docker rmi 镜像ID从系统docker中移除指定镜像
docker load --input 镜像压缩包名.tar加载镜像压缩包中的镜像到系统docker
docker load < 镜像压缩包名.tar加载镜像压缩包中的镜像到系统docker,与上一条等价
docker ps看docker中所有还在跑的容器
docker ps -a看docker中所有容器,包括已经死了的
docker logs -f 容器ID查看指定容器的日志
docker logs 容器名 > log.txt将docker日志保存到本地文件
docker rm -f 容器ID从系统docker中移除指定容器
docker exec -it 容器ID /bin/bash进入指定容器,并且进入bash【命令行工具】
docker system df查看Docker的磁盘使用情况
docker system prune清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
docker system prune -a清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉。所以使用之前一定要想清楚
docker run -p 宿主机端口:容器里面的端口 --restart-always -d -v 宿主机绝对路径:容器里面的路径/opt/kvp 镜像名用指定镜像起一个带守护进程的容器
docker run -p 宿主机端口:容器里面的端口 -d --env-file=配置文件 镜像名在跑容器时加载指定配置文件中的环境变量
docker system df查看镜像、容器、数据卷所占用的空间
docker image ls -f dangling=true查看没有镜像名的虚悬镜像
docker image prune删除虚悬镜像
free -h查看机器的内存配置
docker container start将一个已经终止的容器启动运行
docker container ls展示在跑的所有容器
docker container ls -a展示所有容器,包括已经终止的
docker container stop中止一个运行中的容器
docker container restart将一个运行中的容器终止,后重新启动
docker container rm删除一个终止的容器
docker container rm -f删除一个容器,无所谓此容器是否终止
docker container prune删除所有处于终止状态的容器
docker export 容器id > 文件名保存一个容器的快照
cat 文件名 | docker import - 容器名:tag从文件中加载一个容器快照,同时设定容器名和tag
docker search 镜像名查找官方仓库中的镜像
docker pull 镜像名拉取指定镜像
docker inspect 容器名查看容器信息
docker cp 容器名:容器内路径 宿主机路径从容器内将文件或文件夹拷到宿主机的指定路径
docker cp 宿主机路径 容器名:容器内路径从宿主机将文件或文件夹拷到容器内的指定路径

跑容器时的参数及意义

命令效果
--restart="always"自动持久化,死了自动拉起来
-p 宿主机端口:容器里面的端口设置端口映射关系,可多次使用映射多个端口
-d跑起来以后不打印镜像日志/类似于nohup跑
-v 宿主机绝对路径:容器里面的绝对路径文件目录挂载,将宿主机里的目录挂载进容器的指定目录中,可用此实现文件存储路径的挂载和配置文件的挂载/可以挂载目录也可以挂载具体的文件
-v 数据卷名称:容器里面的绝对路径将数据卷挂载到容器的指定目录
--mount type=bind,source=宿主机绝对路径,target=容器里面的绝对路径将宿主机里的目录挂载进容器的指定目录中,与-v的区别是如果宿主机路径不存在,--mount不会自动创建
--mount source=数据卷名称,target=容器里面的绝对路径将数据卷挂载到容器的指定目录
--env-file=环境变量文件在跑镜像的时候手动加载环境变量文件,这样加载的环境变量会成为优先配置
--rm容器退出后随即删除,一般用于测试
-i交互式操作
-t终端
-it 镜像名/容器名 bash一般这么用,表示进入容器的bash界面

dockerfile指令

指令效果
RUN Linux指令在镜像中执行目标指令
COPY 本地路径 镜像内目标路径将本地路径拷贝到镜像内的目标路径,本地路径可以指向具体文件也可以指向目录【如conf/*】
ADD 本地路径 镜像内目标路径基本和COPY一致,当本地路径指向一个tar压缩文件时,ADD指令会自动将其解压后再放入镜像
CMD Linux指令在镜像中执行目标指令,此用法与RUN无异
CMD ["可执行文件", "参数1", "参数2"...]在镜像中执行指定的可执行文件,并带上相应参数,一般用于指定默认的容器主进程的启动命令
ENTRYPOINT与以上CMD的两种使用方法无异,但如果有ENTRYPOINT时,CMD将会变为给ENTRYPOINT传参,执行语句为 ""
ENV key value声明环境变量,声明后可用$key调用环境变量,容器运行时也可以使用此环境变量
ENV key=value声明环境变量,声明后可用$key调用环境变量,容器运行时也可以使用此环境变量
ARG用法同ENV,但在容器运行时是无法使用ARG定义的环境变量的
VOLUME 目录指定目录挂载为匿名卷,这样在运行时没有指定挂载卷也不会报错
EXPOSE 端口声明运行时容器提供服务端口,仅为声明,并不会真的做什么操作
WORKDIR 工作目录路径指定之后的工作目录,在流程中相当于cd/如果目标目录不存在则会自动创建
USER 用户名指定之后执行命令的用户身份
HEALTHCHECK [选项] CMD <命令>设置检查容器健康状况的命令
HEALTHCHECK NONE如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
ONBUILD 其它指令在当前镜像构建时并不会被执行,以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行

数据管理

指令效果
docker volume create 数据卷名称创建数据卷
docker volume ls查看所有数据卷
docker volume inspect 数据卷名称查看指定数据卷信息
docker volume rm 数据卷名称删除数据卷
docker volume prune删除所有无主的数据卷【容器终止时数据卷不会被删除