镜像命令语句
查看镜像
查看镜像:docker images #查看所用本地的主机上的镜像
-a
或--all
: 显示所有镜像(包括中间镜像)。
--digests
: 显示镜像的摘要信息。
--no-trunc
: 不截断输出,完整显示所有信息。
--quiet
或-q
: 只输出镜像的 ID。如:-aq就是查出所有镜像的id。
卸载docker
卸载docker:
卸载依赖:yum remove docker-ce docker-ce-cli containerd.io
删除资源:rm -rf/var/lib/docker #/var/lib/docker docker的默认工作路径
帮助命令
帮助命令:docker version #docker版本信息
docker info #显示docker的系统信息,包括镜像和容器数量
docker 命令 --help #帮助命令
搜索镜像
docker search mysql #搜索镜像
docker pull 镜像名[:tag] #下载镜像,如果不写tag,默认是latest,建议写。 如docker pull mysql:5.7
删除镜像、容器
docker rmi -f 容器id #删除指定容器
docker rmi -f 容器id 容器id 容器id ...#删除多个容器
docker rmi -f $(docker images -aq)#删除全部的容器
``: 指定要删除的镜像名称。
-f
或--force
: 强制删除镜像,即使有容器正在使用该镜像也会删除。
容器命令语句
新建容器并启动
docker run [可选参数] image
#参数
--name="Name" 容器名字 tomcat01 tomcat02 用来区分容器
-d 后台方式运行
-e 环境配置修改
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P 随机指定端口
#测试,自动并进入容器 docker run -it centos /bin/bash #-it是交互,交互要有控制台,所以选择centos上的一个控制台,/bin/bash或/bin/sh
ls查看容器的centos,基础版本,很多命令都是不完善的
#从容器中退回主机
exit
列出所有的运行的容器
docker ps 命令 #列出当前正在运行的容器
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q #只显示内容的编号
退出容器
exit#直接容器停止并退出
ctrl+P+Q #容器不停止退出
删除容器
#删除容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
启动和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
后台启动容器
#命令 docker run -d 镜像名!
如:docker run -d centos,问题docker ps,发现centos停止了
#常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -f -t --tail 容器
docker logs
可选参数: -t #打印时间戳 -f #实时追踪日志
--tail number #显示指定的日志条数
--tf #显示日志
--tail number #要显示日志条数
#自己编写一段shell脚本
docker run -d centos /bin/sh -c"while true;echo kuangshen;sleep 1;done"
查看容器中的进程信息
docker top 容器id
进入当前正在运行的容器
我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
#命令
方式一:docker exec -it 容器id bashShell
#进入容器后开启一个新的终端,可以在里面操作(常用)
方式二:docker attach 容器id
#进入容器正在执行的终端,不会启动新的进程
从容器中手动拷贝文件到主机中
docker cp 容器ID:容器内文件路径 目的主机路径
如:假设基本文件在webapps.dist下,如果需要用的话将其中内容拷贝到webapps下就行
cd webapps.dist/
ls #发现有如ROOT、docs、example等文件
cd..
cp webapps.dist/* webapps #将webapps.dist下所有文件拷贝到webapps下
dockerfile的指令
Dockerfile 是一种文本文件,用于定义构建 Docker 镜像的步骤。每个 Dockerfile 指令都对应于镜像构建过程中的一个步骤。下面是一些常用的 Dockerfile 指令及其解释:
1. FROM
指定基础镜像。
FROM ubuntu:latest
2. RUN
运行命令,用于安装软件包、下载文件等。
RUN apt-get update && apt-get install -y nginx
3. CMD
指定容器启动时运行的命令。
CMD ["nginx", "-g", "daemon off;"]
4. EXPOSE
声明容器将监听的端口。
保留端口配置。
EXPOSE 80
5. ENV
设置环境变量。
ENV NODE_ENV=production
6. ADD
复制文件或目录到容器内,支持自动解压功能。
#步骤tomcat镜像,这个tomcat压缩包!添加内容
ADD app.tar.gz /usr/src/app/
7. COPY
复制文件或目录到容器内,不支持自动解压。
类似ADD,将我们文件拷贝到镜像
COPY app.tar.gz /usr/src/app/
8. WORKDIR
设置工作目录。
WORKDIR /usr/src/app
9. VOLUME
创建一个数据挂载点。
VOLUME /data
10. LABEL
为镜像添加元数据标签。
LABEL maintainer="example@example.com"
11. ONBUILD
当镜像作为其他镜像的基础镜像时触发的指令。
当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令。触发指令。
ONBUILD ADD . /app/src
12. USER
设置用户 ID 或用户名。
USER nginx
13. HEALTHCHECK
定义健康检查命令。
HEALTHCHECK --interval=30s --timeout=3s CMD curl --fail http://localhost/ || exit 1
14. ARG
定义构建参数。
ARG version=1.0 FROM node:${version}-alpine
15. STOPSIGNAL
定义容器停止信号。
STOPSIGNAL SIGINT
16.MAINTAINER
镜像是谁写的,姓名+邮箱
示例 Dockerfile
下面是一个简单的 Dockerfile 示例,用于构建一个基于 Nginx 的 Web 服务器镜像:
1# 使用官方 Nginx 镜像作为基础镜像 2FROM nginx:latest 3 4# 复制默认配置文件 5COPY ./nginx.conf /etc/nginx/nginx.conf 6 7# 复制静态文件到容器 8COPY ./public /usr/share/nginx/html 9 10# 暴露 HTTP 端口 11EXPOSE 80 12 13# 设置容器启动时运行的命令 14CMD ["nginx", "-g", "daemon off;"]
构建和运行 Docker 镜像
docker build -t my-nginx-web .
docker run -d -p 8080:80 my-nginx-web
这些是最常见的 Dockerfile 指令,你可以根据自己的需求组合使用它们来构建复杂的 Docker 镜像。