您的位置:首页 > 健康 > 美食 > 晚上睡不着网站2021免费_怎么开电商网店_国际军事新闻_苏州关键词优化搜索排名

晚上睡不着网站2021免费_怎么开电商网店_国际军事新闻_苏州关键词优化搜索排名

2024/12/24 8:29:44 来源:https://blog.csdn.net/2303_77275067/article/details/144122359  浏览:    关键词:晚上睡不着网站2021免费_怎么开电商网店_国际军事新闻_苏州关键词优化搜索排名
晚上睡不着网站2021免费_怎么开电商网店_国际军事新闻_苏州关键词优化搜索排名

docker run 是 Docker 中最常用的命令之一,用于创建并运行一个新的容器。以下是一些常见的参数及其说明:

常见参数列表

  1. -d 或 --detach

    • 作用: 后台运行容器。
    • 示例docker run -d nginx
  2. -p 或 --publish

    • 作用: 将宿主机的端口映射到容器的端口。
    • 示例docker run -p 8080:80 nginx(将宿主机的8080端口映射到容器的80端口)
  3. -v 或 --volume

    • 作用: 挂载宿主机的目录或文件到容器中。
    • 示例docker run -v /host/data:/container/data nginx(将宿主机的/host/data目录挂载到容器的/container/data目录)
  4. -e 或 --env

    • 作用: 设置环境变量。
    • 示例docker run -e MYSQL_ROOT_PASSWORD=123456 mysql(设置MySQL容器的root密码)
  5. --name

    • 作用: 为容器指定一个名称。
    • 示例docker run --name my_nginx nginx(将容器命名为my_nginx
  6. -i 或 --interactive

    • 作用: 保持STDIN打开,即使没有附加到终端。
    • 示例docker run -i nginx
  7. -t 或 --tty

    • 作用: 分配一个伪终端。
    • 示例docker run -t nginx
  8. --rm

    • 作用: 容器退出后自动删除。
    • 示例docker run --rm nginx
  9. --network

    • 作用: 指定容器的网络模式。
    • 示例docker run --network=host nginx(使用宿主机的网络模式)
  10. -u 或 --user

    • 作用: 指定运行容器的用户。
    • 示例docker run -u 1000:1000 nginx(以UID 1000的用户运行容器)
  11. --restart

    • 作用: 指定容器的重启策略。
    • 示例docker run --restart=always nginx(容器退出后总是重启)
  12. --link

    • 作用: 链接其他容器,以便容器间通信。
    • 示例docker run --link mysql:db nginx(将MySQL容器链接到Nginx容器,并使用别名db
  13. --privileged

    • 作用: 赋予容器扩展权限,通常用于内核模块加载等高级操作。
    • 示例docker run --privileged nginx
  14. --entrypoint

    • 作用: 覆盖镜像的默认入口点。
    • 示例docker run --entrypoint "/bin/bash" nginx(使用/bin/bash作为入口点)

镜像相关命令

常见命令:

  1. docker pull

    • 作用: 从仓库拉取镜像。
    • 示例docker pull nginx
  1. docker build

    • 作用: 从 Dockerfile 构建镜像。
    • 示例docker build -t my_image:1.0 .
  2. docker images

    • 作用: 列出本地镜像。
    • 示例docker images
  3. docker rmi

    • 作用: 删除一个或多个镜像。
    • 示例docker rmi nginx
  4. docker tag

    • 作用: 为镜像打标签。
    • 示例docker tag my_image:1.0 my_image:latest
  5. docker push

    • 作用: 将镜像推送到远程仓库。
    • 示例docker push my_repo/my_image:latest

容器相关命令

  1. docker run

    • 作用: 创建并运行一个新的容器。
    • 示例docker run -d --name my_nginx -p 8080:80 nginx
  2. docker start

    • 作用: 启动一个已存在的容器。
    • 示例docker start my_nginx
  3. docker stop

    • 作用: 停止一个正在运行的容器。
    • 示例docker stop my_nginx
  4. docker restart

    • 作用: 重启一个容器。
    • 示例docker restart my_nginx
  5. docker rm

    • 作用: 删除一个或多个容器。
    • 示例docker rm my_nginx
  6. docker exec

    • 作用: 在运行的容器中执行命令。
    • 示例docker exec -it my_nginx bash
  7. docker logs

    • 作用: 查看容器的日志。
    • 示例docker logs my_nginx
  8. docker ps

    • 作用: 列出正在运行的容器。
    • 示例docker ps
  9. docker ps -a

    • 作用: 列出所有容器,包括已停止的。
    • 示例docker ps -a

例子

  • docker save: 用于将一个或多个 Docker 镜像打包成一个 tar 文件。这个文件可以用于备份、传输或导入到其他 Docker 环境中。

  • -o: 指定输出的文件名,这里指定为 nginx.tar

  • nginx:latest: 指定要保存的镜像及其标签。nginx 是镜像名,latest 是标签。

docker save -o nginx.tar nginx:latest

执行这个命令后,Docker 会将 nginx:latest 镜像的所有层及相关元数据打包成一个名为 nginx.tar 的 tar 文件。这个文件可以被加载回 Docker 中,或者传输到其他 Docker 环境中进行恢复。

  • 强制删除镜像: 如果你想强制删除镜像及其所有标签,可以使用 -f 或 --force 选项:

    docker rmi -f nginx:latest
    
  • 删除所有无标签镜像: 如果你想删除所有没有标签的镜像,可以使用以下命令:

    docker image prune
    

总之,docker rmi 是一个常用的命令,用于管理和清理 Docker 环境中的镜像。

  • docker load: 用于从 tar 文件中加载一个或多个 Docker 镜像。这个命令通常用于将保存在 tar 文件中的镜像恢复到 Docker 环境中。

  • -i: 指定输入文件,这里指定为 nginx.tar

docker load -i nginx.tar

执行这个命令后,Docker 会从 nginx.tar 文件中提取镜像及其所有的层和元数据,并在 Docker 环境中注册这些镜像。

  • 加载成功: 如果加载成功,Docker 会输出类似以下的信息:

    Loaded image: nginx:latest
    
    • Loaded image: nginx:latest: 这行输出表示 nginx:latest 镜像已经成功加载到 Docker 环境中。

命令分解

  • docker run: 用于创建并运行一个新的容器。

  • -d: 指定容器在后台运行(即以“detached”模式运行)。这样你可以在不影响当前终端的情况下让容器继续运行。

  • --name nginx: 指定容器的名称为 nginx。这样你可以通过名称而不是容器 ID 来管理容器。

  • -p 80:80: 将容器内部的 80 端口映射到主机的 80 端口。这样当访问主机的 80 端口时,实际上是在访问容器内部的 80 端口。

  • nginx: 指定要运行的镜像名称。这里使用的是 nginx 镜像。Docker 会首先在本地查找这个镜像,如果没有找到,则会从 Docker Hub 拉取最新的 nginx 镜像。

完整命令

docker run -d --name nginx -p 80:80 nginx

执行结果

执行这个命令后,Docker 会创建并运行一个新的容器,基于 nginx 镜像。如果你没有在本地找到 nginx 镜像,Docker 会自动从 Docker Hub 拉取最新的 nginx 镜像。

解释执行结果

  • 容器创建并运行: Docker 会输出一个长字符串,这是新创建的容器的 ID。例如:

    5f5c2b5a3c052c96a3b1d45e0e3d9e5a9f2b5c4d5e6f7a8b9c0d1e2f3a4b5c6d
    
  • 映射端口: 容器的 80 端口已经映射到主机的 80 端口。你可以通过访问 http://主机IP 来访问 Nginx 服务。

  • 后台运行: 容器在后台运行,你可以在其他终端中使用 docker ps 命令查看正在运行的容器:

    docker ps
    

相关操作

  • 停止容器: 你可以使用 docker stop 命令停止运行中的容器:

    docker stop nginx
    
  • 启动容器: 你可以使用 docker start 命令重新启动已停止的容器:

    docker start nginx
    
  • 查看容器日志: 你可以使用 docker logs 命令查看容器的日志输出:

    docker logs nginx
    

总之,这个命令是 Docker 中最常用的命令之一,用于快速创建并运行一个容器,并且将容器的端口映射到主机端口,以便外部访问。

命令分解

  • docker exec: 用于在一个已经运行的 Docker 容器内部执行一个命令。

  • -it: 这是两个选项的组合:

    • -i: 以交互模式运行命令。这样你可以在执行命令时输入和输出数据。
    • -t: 分配一个伪终端(pseudo-TTY),这样你可以像在普通的终端中一样与命令进行交互。
  • nginx: 指定要操作的容器的名称。这里使用的是名为 nginx 的容器。

  • bash: 这是要在容器内部执行的命令。bash 是 Linux 中的一个常用的 shell,通过这个命令,你可以进入容器的交互式 bash 终端。

完整命令

docker exec -it nginx bash

执行结果

执行这个命令后,你会被切换到 nginx 容器的 bash 终端,可以在这个终端中执行各种命令,就像在本地终端中一样。

解释执行结果

  • 成功进入容器:如果容器正在运行并且 bash 命令可用,你会看到终端提示符变为容器的 bash 提示符,类似于:

    root@5f5c2b5a3c05:/#
    
    • root: 用户名(通常是 root)。
    • 5f5c2b5a3c05: 容器的 ID 或名称。
    • /: 当前工作目录。
  • 容器内部操作:在容器内部,你可以执行各种命令来检查和修改容器的环境、配置文件、服务状态等。例如:

    ls /var/www/html
    

相关操作

  • 退出容器:你可以使用 exit 命令或者按 Ctrl + D 键退出容器的 bash 终端,返回到主机的终端。

    exit
    
  • 检查容器状态:如果 nginx 容器没有运行,你可以使用 docker start 命令启动它:

    docker start nginx
    
  • 查看正在运行的容器:你可以使用 docker ps 命令查看正在运行的容器:

    docker ps

数据卷相关

1. 创建数据卷

docker volume create my_volume

  • 解释:创建一个名为 my_volume 的新数据卷。

2. 列出所有数据卷

docker volume ls

  • 解释:列出所有数据卷。

3. 检查数据卷详细信息

docker volume inspect my_volume

  • 解释:显示名为 my_volume 的数据卷的详细信息。

4. 删除数据卷

docker volume rm my_volume

  • 解释:删除名为 my_volume 的数据卷。注意,删除数据卷会永久删除其中的数据。

5. 删除未使用的数据卷

docker volume prune

  • 解释:删除所有未被任何容器使用的数据卷。系统会提示确认操作。

6. 在容器中使用数据卷

docker run -d --name my_container -v my_volume:/path/in/container my_image

  • 解释
    • -d:以 detached 模式运行容器。
    • --name my_container:指定容器的名称为 my_container
    • -v my_volume:/path/in/container:将名为 my_volume 的数据卷挂载到容器内的 /path/in/container 目录。
    • my_image:要运行的 Docker 镜像。

7. 创建并使用匿名数据卷

docker run -d --name my_container -v /path/in/container my_image

  • 解释
    • -v /path/in/container:创建一个匿名数据卷并将其挂载到容器内的 /path/in/container 目录。匿名数据卷会在容器停止时自动删除。

8. 使用主机目录作为数据卷

docker run -d --name my_container -v /host/path:/container/path my_image

  • 解释
    • -v /host/path:/container/path:将主机上的 /host/path 目录挂载到容器内的 /container/path 目录。

9. 共享数据卷

你可以将同一个数据卷挂载到多个容器中,以实现数据共享:

docker run -d --name container1 -v my_volume:/shared_data my_image
docker run -d --name container2 -v my_volume:/shared_data my_image

  • 解释:两个容器 container1 和 container2 共享同一个数据卷 my_volume,从而共享 /shared_data 目录中的数据。

10. 清理数据卷

删除容器时,数据卷不会自动删除。你可以使用以下命令删除容器及其关联的数据卷:

docker rm -v my_container

  • 解释:删除名为 my_container 的容器及其关联的数据卷。

本地挂载

1. 什么是 Docker 本地目录挂载?

在 Docker 中,挂载(Mount)是指将宿主机(即运行 Docker 的主机)上的目录或文件挂载到容器内部的某个路径上。这样做的目的是让容器内的应用程序能够访问宿主机上的文件系统,从而实现数据持久化、配置文件共享、日志记录等功能。

2. 挂载的类型

Docker 支持两种主要的挂载类型:

  • 绑定挂载(Bind Mounts):将宿主机的目录或文件直接挂载到容器内。这种方式简单直接,但需要宿主机和容器使用相同的文件系统。

  • 卷挂载(Volumes):Docker 管理的卷,可以独立于宿主机的文件系统,提供更好的数据隔离和管理。卷可以在多个容器之间共享,并且可以由 Docker 自动管理。

3. 绑定挂载的使用

绑定挂载是最常见的挂载方式,适用于需要将宿主机上的特定目录或文件直接映射到容器内的情况。

语法格式:

docker run -v /host/path:/container/path image_name

示例:
假设你想将宿主机的 /data 目录挂载到容器内的 /app/data 目录,可以使用以下命令:

docker run -v /data:/app/data ubuntu

在这个例子中,/data 是宿主机的目录,/app/data 是容器内的目标路径。容器启动后,容器内的 /app/data 目录将直接映射到宿主机的 /data 目录。

特点:

  • 数据持久化:容器内的修改会直接反映到宿主机的挂载目录上。
  • 权限问题:如果宿主机和容器的用户/组 ID 不一致,可能会遇到权限问题。
  • 路径问题:如果宿主机的路径不存在,Docker 不会自动创建它。

自定义镜像

1. Dockerfile 的基本结构

一个典型的 Dockerfile 通常包含以下几部分:

  • 基础镜像(Base Image):从哪个基础镜像开始构建。
  • 维护者信息(Maintainer):指定镜像的维护者信息(可选)。
  • 环境变量(Environment Variables):设置环境变量。
  • 工作目录(Working Directory):设置工作目录。
  • 文件复制(Copy):将文件从宿主机复制到镜像中。
  • 运行命令(Run):在镜像中执行命令。
  • 暴露端口(Expose):指定容器运行时需要暴露的端口。
  • 启动命令(Entrypoint 或 Cmd):指定容器启动时执行的命令。

2. Dockerfile 常用指令

2.1 FROM

FROM 指令用于指定基础镜像。每个 Dockerfile 都必须以 FROM 指令开始。

示例:

FROM ubuntu:20.04

这行指令表示从 ubuntu:20.04 镜像开始构建。

2.2 MAINTAINER(已弃用)

MAINTAINER 指令用于指定镜像的维护者信息,但在 Docker 1.13 版本后,官方推荐使用 LABEL 指令来代替。

示例:

LABEL maintainer="your_email@example.com"

2.3 RUN

RUN 指令用于在镜像构建过程中执行命令。RUN 指令会在当前镜像之上创建一个新层,并在该层上执行命令。

示例:

RUN apt-get update && apt-get install -y \nginx \vim

2.4 COPY

COPY 指令用于将文件或目录从宿主机复制到镜像中。

示例:

COPY . /app

这行指令会将当前目录(.)中的所有文件复制到镜像中的 /app 目录。

2.5 ADD

ADD 指令类似于 COPY,但它还可以处理压缩文件(如 tar.gz)并自动解压缩,以及从远程 URL 下载文件。

示例:

ADD app.tar.gz /app

2.6 CMD

CMD 指令用于指定容器启动时执行的默认命令。如果 Docker 容器启动时没有指定命令,则执行 CMD 中的命令。

示例:

CMD ["nginx", "-g", "daemon off;"]

2.7 ENTRYPOINT

ENTRYPOINT 指令用于指定容器启动时执行的命令。与 CMD 不同的是,ENTRYPOINT 指定的命令不会被覆盖,而是可以和 CMD 结合使用。

示例:

ENTRYPOINT ["start.sh"]
CMD ["--verbose"]

2.8 EXPOSE

EXPOSE 指令用于指定容器运行时需要暴露的端口。

示例:

EXPOSE 80

这行指令表示容器运行时会暴露 80 端口。

2.9 ENV

ENV 指令用于设置环境变量。

示例:

ENV APP_DIR /app

2.10 WORKDIR

WORKDIR 指令用于设置工作目录。后续的 RUNCMDENTRYPOINTCOPY 和 ADD 指令都会在这个目录下执行。

示例:

WORKDIR /app

2.11 VOLUME

VOLUME 指令用于创建一个挂载点,用于数据持久化或共享数据。

示例:

VOLUME ["/data"]

2.12 USER

USER 指令用于指定后续指令(如 RUNCMDENTRYPOINT)以哪个用户身份执行。

示例:

USER appuser

2.13 LABEL

LABEL 指令用于为镜像添加元数据。

示例:

LABEL version="1.0"
LABEL description="This is a test image."

2.14 ARG

ARG 指令用于定义构建参数,可以在构建时通过 --build-arg 传递给 Dockerfile。

示例:

ARG TAG=latest
FROM ubuntu:$TAG

在构建镜像时,可以通过以下命令传递参数:

docker build --build-arg TAG=20.04 .

3. 构建镜像

使用 Dockerfile 构建镜像的命令如下:

docker build -t image_name:tag .

其中:

  • -t 参数用于指定镜像的名称和标签。
  • . 表示 Dockerfile 所在的目录。

4. 示例 Dockerfile

以下是一个完整的 Dockerfile 示例,用于构建一个简单的 Nginx 镜像:

# 使用官方 Nginx 镜像作为基础镜像
FROM nginx:latest# 维护者信息
LABEL maintainer="your_email@example.com"# 设置工作目录
WORKDIR /usr/share/nginx/html# 复制宿主机上的 index.html 到镜像中
COPY index.html .# 暴露 80 端口
EXPOSE 80# 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]

例子:

将下面内容放在Dockerfile文件下面

FROM openjdk:17COPY ./target/my-app.jar /usr/app/my-app.jarCMD ["java", "-jar", "/usr/app/my-app.jar"]

1. FROM openjdk:17

FROM openjdk:17

  • 解释: 这一行指定了基础镜像。openjdk:17 是 Docker Hub 上预构建的镜像,包含了 OpenJDK 17 版本。这个镜像已经包含了 JDK 17,因此你不需要在 Dockerfile 中安装 JDK。

2. COPY ./target/my-app.jar /usr/app/my-app.jar

COPY ./target/my-app.jar /usr/app/my-app.jar

  • 解释: 这一行将宿主机上的 ./target/my-app.jar 文件复制到镜像中的 /usr/app/my-app.jar 路径。
    • ./target/my-app.jar: 这是宿主机上的文件路径,通常是你 Maven 或 Gradle 项目构建后生成的 JAR 文件。
    • /usr/app/my-app.jar: 这是镜像中的目标路径,JAR 文件将被复制到这个路径。

3. CMD ["java", "-jar", "/usr/app/my-app.jar"]

CMD ["java", "-jar", "/usr/app/my-app.jar"]

  • 解释: 这一行指定了容器启动时执行的默认命令。CMD 指令的语法是一个 JSON 数组,表示要执行的命令及其参数。
    • "java": 这是要执行的命令,即运行 Java 进程。
    • "-jar": 这是 Java 命令的一个选项,表示接下来要执行的是一个 JAR 文件。
    • "/usr/app/my-app.jar": 这是要执行的 JAR 文件的路径,即上一步中复制的 my-app.jar 文件。

4. 完整 Dockerfile 示例

以下是包含上述指令的完整 Dockerfile 示例:

# 使用官方的 OpenJDK 17 镜像作为基础镜像
FROM openjdk:17# 将宿主机上的 my-app.jar 文件复制到镜像中的 /usr/app/ 目录
COPY ./target/my-app.jar /usr/app/my-app.jar# 在容器启动时执行 Java 应用程序
CMD ["java", "-jar", "/usr/app/my-app.jar"]

5. 构建和运行镜像

5.1 构建镜像

在 Dockerfile 所在目录下,使用以下命令来构建镜像:

docker build -t my-app-image:latest .

  • -t my-app-image:latest: 指定镜像的名称和标签。
  • . 表示当前目录,即 Dockerfile 所在的目录。
5.2 运行容器

构建完成后,你可以使用以下命令来运行一个基于该镜像的容器:

docker run -it --rm my-app-image:latest

  • -it 参数用于交互模式运行容器。
  • --rm 参数表示容器退出后自动删除容器。
  • my-app-image:latest 是你构建的镜像名称和标签。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com