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

简介

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

docker run

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

python 复制代码
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参数的用法

python 复制代码
docker run -p ip:主机端口:容器端口
docker run -p 主机端口:容器端口 (常用) 
docker run -p 容器端口

使用示例

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

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

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

运行如下图:

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

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

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

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

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

python 复制代码
docker run -it -p 1111:8080 tomcat:7 bash
  1. 以 root 权限创建容器,当进入容器之后,拥有 root 权限去执行命令
python 复制代码
# 创建容器
docker run -d --name jenkin_hogwarts --privileged=true jenkins/jenkins
# 进入容器
docker exec -it jenkin_hogwarts bash

不加 --privileged的例子

python 复制代码
# 创建容器
docker run -d --name jenkins_muller jenkins/jenkins

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

注:

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

总结

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

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
Karoku0662 小时前
【CI/CD】CI/CD环境搭建流程和持续集成环境配置
运维·ci/cd·docker·容器·kubernetes·prometheus
程序员古德4 小时前
《论模型驱动架构设计方法及其应用》审题技巧 - 系统架构设计师
软件测试·实际应用·软考论文·模型驱动架构·写作框架
Bright16687 小时前
centos9安装k8s集群
云原生·容器·kubernetes
!!!5259 小时前
华为云镜像加速器
docker·容器·华为云
xidianjiapei00110 小时前
Kubernetes的Ingress 资源是什么?
云原生·容器·kubernetes
sszdzq11 小时前
Docker
运维·docker·容器
dmy12 小时前
docker 快速构建开发环境
后端·docker·容器
土豆沒加13 小时前
K8S的Dashboard登录及验证
云原生·容器·kubernetes
终端行者14 小时前
kubernetes1.28部署mysql5.7主从同步,使用Nfs制作持久卷存储,适用于centos7/9操作系统,
数据库·容器·kubernetes
2401_8979300615 小时前
linux系统如何配置host.docker.internal
linux·docker·eureka