首页 > 其他分享 >软件测试|深入解析Docker Run命令:创建和启动容器的完全指南

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南

时间:2023-08-10 19:02:02浏览次数:50  
标签:容器 Run tomcat -- 端口 run Docker docker 软件测试

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_端口映射

简介

Docker是一种流行的容器化平台,用于构建、分发和运行应用程序。其中一个最基本且重要的Docker命令是docker run,用于创建和启动容器。本文将详细解析docker run命令的用途、参数和示例,帮助您全面掌握创建和启动容器的过程。

docker run

在Docker中,容器是运行应用程序的独立环境。docker run命令用于根据指定的镜像创建和启动一个新的容器。下面是docker run命令的基本语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

注1:docker rundocker create语法格式一样,只是docker run会创建并运行容器甚至可以进入容器内部

注2:COMMAND需要在容器内执行的命令

docker run 执行流程

第一步,在指定镜像上创建一个可写的容器层 第二步,使用指定的命令(COMMAND)启动它 简而言之,docker run 相当于执行了两个 API:/containers/create/containers/(id)/start

options参数说明

docker run命令有很多的参数,很多参数都拥有重要的作用,这里我们介绍一下最常用的部分参数

  • -i,以交互模式运行容器,通常与 -t 同时使用
  • -t,启动容器后,为容器分配一个命令行,通常与-i同时使用
  • -v,目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
  • -d,守护进程,后台运行该容器
  • -p,指定端口映射,格式:主机(宿主)端口:容器端口
  • -P,随机端口映射,容器内部端口随机映射到主机的端口
  • -u,以什么用户身份创建容器
  • --name "nginx-lb",容器名字
  • -m, --memory bytes,设置容器使用内存最大值
  • -h, --hostname string,指定容器的 host name
  • --dns 8.8.8.8,指定容器 dns 服务器
  • -e username="ritchie",设置环境变量
  • --restart,Docker 重启后,容器是否自动重启
  • --privileged,容器内是否使用真正的 root 权限

注:-p参数的用法

docker run -p ip:主机端口:容器端口
docker run -p 主机端口:容器端口 (常用) 
docker run -p 容器端口

使用示例

  1. 使用tomcat7镜像,创建名为tomcat_hogwarts的容器,如下:
docker run --name tomcat_hogwarts tomcat:7

这样运行,会直接将容器运行日志打印出来,所以一般都需要加 -d参数,否则无法继续敲其他命令

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_端口映射_02

  1. 使用tomcat7镜像,创建名为tomcat_hogwarts01的容器,并使用-d参数,让其后台运行,命令如下:
docker run -d --name tomcat_hogwarts01 tomcat:7

运行如下图:

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_docker_03

通过-d参数创建容器,不影响我们运行其他命令。

  1. 使用镜像 tomcat:7 以后台模式启动一个容器将容器的 8080 端口映射到主机的随机端口,命令如下:
docker run -d -P --name tomcat_muller tomcat:7

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_端口映射_04

  1. 使用镜像 tomcat:7 以后台模式启动一个容器将容器的 8080 端口映射到主机的 8888 端口,命令如下:
docker run -d -p 8888:8080 --name tomcat_salah tomcat:7

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_tomcat_05

可以看到 PORTS 一列,主机的 8888 端口指向了容器的 8080 端口。

  1. 使用镜像 tomcat:7 ,以后台模式启动一个容器,将容器的 8080 端口映射到主机127.0.0.1:8888 端口容器名字自定义为 tomcat77主机的目录 /usr/local/tomcat/webapp 映射到容器/usr/local/tomcat/webapps 启动容器后,在容器内执行 bash 命令,命令如下:
docker run -d -p 127.0.0.1:8888:8080 -v /usr/local/webapps:/usr/local/webapps -it --name tomcat77 tomcat:7 bash

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_端口映射_06

  1. 容器 8080 端口映射到主机的 1111 端口-it 以交互模式启动一个容器,在容器内执行 bash 命令

注:如果这里加了-d 参数,则不会进入容器的 CLI 界面;如果不加 bash 命令,则会执行 tomcat 容器本身自动会执行的命令( catalina.sh run ),也会进不了 CLI 界面,因为会打印一堆运行日志

docker run -it -p 1111:8080 tomcat:7 bash

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_端口映射_07

  1. 以 root 权限创建容器,当进入容器之后,拥有 root 权限去执行命令
# 创建容器
docker run -d --name jenkin_hogwarts --privileged=true jenkins/jenkins
# 进入容器
docker exec -it jenkin_hogwarts bash

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_docker_08

不加 --privileged的例子

# 创建容器
docker run -d --name jenkins_muller jenkins/jenkins

# 进入容器
docker exec -it -uroot jenkins_muller bash

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南_tomcat_09

注:

  • -uroot:是给了 root 用户身份,但并没有真正的 root 权限
  • --privileged:真正让当前用户有了 root 权限
  1. 设置容器自动重启
docker run -d --name jenkins_salah --restart always jenkins/jenkins
  1. 退出容器
exit         #容器直接退出
ctrl +P +Q  #容器不停止退出     ---注意:这个很有用的操作

总结

docker run命令是Docker中最基本且重要的命令之一,用于创建和启动容器。通过了解和灵活使用不同的选项和参数,可以定制容器的名称、端口映射、数据持久化、环境变量等设置。希望本文对大家理解和使用docker run命令有所帮助,并能够顺利创建和启动自己的Docker容器!


标签:容器,Run,tomcat,--,端口,run,Docker,docker,软件测试
From: https://blog.51cto.com/u_15640304/7038773

相关文章

  • docker初识
    docker什么是Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题应用部署的环境问题大型项目组件较多,运行环境也......
  • 安装docker容器
    写在前面之前写过一篇关于docker安装的博客,那种方式安装有很多缺点。运行docker和使用docker的时候会产生多个进程,占用Linux主机的资源。于是,我找到了新的方式安装docker。重要的三个文件/usr/lib/systemd/system/docker.service/usr/lib/systemd/system/docker.socket/usr......
  • docker容器的使用
    删除docker容器dockerrmmysql批量删除已经停止的容器#方法一#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,sudodockerps-a|grepExited|awk'{print$1}'#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器sudodockerrm`dockerps-a|g......
  • docker overlay2是什么
    dockeroverlay2是Docker中的存储驱动之一,用于管理镜像和容器层的数据。它使用最小存储空间来存储像层这样的临时数据。overlay2本质上是多层存储驱动。它将镜像和容器层都视为独立的匿名临时文件系统。然后通过联合挂载将这些层组合成所需的最终文件系统。overlay2使用两个目......
  • docker 删除已停止的容器
    docker删除已停止的容器根据容器的状态,删除Exited状态的容器#根据容器的状态,删除Exited状态的容器sudodockerrm$(sudodockerps-qfstatus=exited)删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)sudodockerrm$(sudodockerps-a-q)查询所有......
  • docker-compose 安装MySQL(单实例)
    需求场景:在开发和测试环境中,或者研究型的环境,对于数据库的安全和稳定性可以稍低一些,那么我们可以通过docker快速部署MySQL服务,降低部署的时间成本。 vimdocker-compose.ymlversion:'3'services:mysql:restart:alwaysprivileged:trueimage:mysql:8.0......
  • docker日志存储限制
    新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:#vim/etc/docker/daemon.json{"data-root":"/opt/docker","insecure-registries":["http://10.168.1.130:5000"],"log-driver":......
  • 记录一个windows for Docker启动失败
    Hyper-V的目录错误,导致docker启动失败。因为windowsforDocker依赖Hyper-V,如果Hyper-V不能快速创建虚拟机,就会导致Docker初始化失败。 ......
  • 1.Elasticsearch集群包安装、二进制安装与Docker安装
    ElasticsearchElasticsearch是一个实时的全文搜索,存储库和分析引擎https://www.elastic.co/cn/what-is/elasticsearchElasticsearch在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,可用于多种场景:应用程序搜索网站搜索企业搜索日志处理和分析基础设施指标和......
  • Docker安装gogs
    拉取镜像dockerpullgogs/gogs创建目录mkdir-p/usr/local/gogs创建容器dockerrun--name=gogs-d-p10022:22-p10880:3000-v/usr/local/gogs:/datagogs/gogs在mysql创建数据库gogs(只创建数据库即可,后面会配置连接参数并自动生成很多表)访问gogs安装软件:http://192.168.101......