目录
Dcoker基本概念
Docker 包括三个基本概念:
-
镜像(
Image
):Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 -
容器(
Container
):镜像(Image
)和容器(Container
)的关系,就像是面向对象程序设计中的类
和实例
一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 -
仓库(
Repository
):仓库(Repository
)类似Git的远程仓库,集中存放镜像文件
三者关系可以用下图表示:
docker安装
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce
$ systemctl enable docker && systemctl start docker
$ docker --version
配置镜像加速
[root@k8s-node2 ~]# vim /etc/docker/daemon.json
{ "registry-mirrors": [ "https://do.nark.eu.org", "https://dc.j8.work", "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ], "exec-opts": ["native.cgroupdriver=systemd"] }
systemctl daemon-reload systemctl restart docker
参考:
CentOS 7.9下安装Docker及常用镜像_docker centos7.9mini镜像-优快云博客
https://blog.youkuaiyun.com/qq_43721032/article/details/119134118
https://blog.youkuaiyun.com/allway2/article/details/121583352
docker cmd
1、容器
容器生命周期
-
启动:启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。
-
查看运行容器
docker ps 列出本机运行的容器
docker ps -a 列出本机所有的容器(包括停止和运行)
-
创建/启动/重启/关闭
docker run/start/restart /stop/ xxx
-
杀死容器进程
docker kill [容器ID]
-
删除容器
docker rm xxx
-
查看日志
docker logs [容器ID]
-
进入容器
docker exec/attach
# 如果从这个 stdin 中 exit,会导致容器的停止
docker attach [容器ID]
交互式进入容器
docker exec [容器ID]
2、镜像
-
检索镜像
docker search 关键字
-
获取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
-
列出镜像
docker images/image ls
-
删除镜像
docker rmi/image rm <镜像Id>
3、服务
-
查看docker版本信息
docker version
-
查看docker简要信息/版本
docker -v
-
启动/重启/关闭docker
sytemctl start/restart/stop docker
-
设置开启启动
systemctl enable docker
Dockerfile构建镜像
Dockerfile 是一个文本格式的配 文件,用户可以使用 Dockerfile 来快速创建自定义的镜像。
Dockerfile 由一行行行命令语句组成,并且支持以#开头的注释行.
Dockerfile是一种能够被Docker程序解释的剧本。Dockerfile由一条一条的指令组成,并且有自己的书写格式和支持的命令。当我们需要在容器镜像中指定自己额外的需求时,只需在Dockerfile上添加或修改指令,然后通过docker build生成我们自定义的容器镜像(image)。
-
构建类指令
-
用于构建image
-
其指定的操作不会在运行image的容器上执行(FROM、MAINTAINER、RUN、ENV、ADD、COPY)
-
-
设置类指令
-
用于设置image的属性
-
其指定的操作将在运行image的容器中执行(CMD、ENTRYPOINT、USER 、EXPOSE、VOLUME、WORKDIR、ONBUILD)
-
-
指令说明
指令 | 描述 |
---|---|
FROM | 构建新镜像基于的基础镜像 |
LABEL | 标签 |
RUN | 构建镜像时运行的Shell命令 |
COPY | 拷贝文件或目录到镜像中 |
ADD | 解压压缩包并拷贝 |
ENV | 设置环境变量 |
USER | 为RUN、CMD和ENTRYPOINT执行命令指定运行用户 |
EXPOSE | 声明容器运行的服务端口 |
WORKDIR | 为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录 |
CMD | 运行容器时默认执行,如果有多个CMD指令,最后一个生效 |
docker build 命令可以使用以下选项:
-t :指定镜像的名称和标签。 -f :指定 Dockerfile 的路径或 URL。 -q :只显示镜像 ID。 -no-cache :不使用缓存构建镜像。 -build-arg :指定构建镜像时使用的参数。 -force-rm :在构建镜像时删除中间容器。 -target :指定构建镜像的目标阶段。
构建镜像demo
1、文件目录
root@try:~/dockerbuild/try# pwd /root/dockerbuild/try root@try:~/dockerbuild/try# ll total 73192 drwxr-xr-x 2 root root 4096 Dec 27 14:33 ./ drwxr-xr-x 3 root root 4096 Dec 27 14:27 ../ -rw-r--r-- 1 root root 550 Dec 27 14:25 Dockerfile -rw-r--r-- 1 root root 74933241 Dec 27 14:33 test.jar
2、创建DockerFile文件
# 使用 OpenJDK 17 基础镜像 FROM jre17:v1.0 # 设置工作目录 WORKDIR /app # 暴露端口 EXPOSE 8081 # 设置容器内日志目录 RUN mkdir -p /app/logs # 将构建的 JAR 文件添加到容器中 ADD test.jar /app/test.jar # 设置启动命令 ENTRYPOINT ["java","-jar","-Xms512m","-Xmx512m","test.jar"] # 设置时区为亚洲/上海 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone #编译命令 # docker build -t test:v1.0 . #启动命令 加时区 # docker run -e TZ="Asia/Shanghai" -d --network host --name vims-set-das-link -p 8081:8081 -v /home/logs:/app/logs test:v1.0 # 启动命令 docker run -d --network host --name test -p 8081:8081 -v /home/logs:/app/logs test:v1.0
3、镜像构建
docker build -t test .
4、镜像运行
docker run -d --network host -p 8081:8081 -v /home/logs:/app/logs test:v1.0