Docker(12)- docker run 命令详解

简介: Docker(12)- docker run 命令详解

如果你还想从头学起 Docker,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1870863.html

 

作用


创建一个新的容器并运行一个命令

 

语法格式


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

  • 备注:其实跟 docker create 一样的语法格式,只不过可以运行容器甚至进入容器内部
  • COMMAND :需要在容器内执行的命令

 

docker run 执行流程

  • 首先在指定镜像上创建一个可写的容器层
  • 然后使用指定的命令(COMMAND)启动它
  • docker run 相当于执行了两个 API:/containers/create、/containers/(id)/start

 

options 说明

option 作用
-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 权限

备注:其实还有好多 options,但是目前还没用到,要用的时候再写吧

 

-p 的三种写法

docker run -p ip:主机端口:容器端口

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

docker run -p 容器端口

 

实际栗子


栗子一

使用镜像 tomcat:7 ,容器命名为 tomcat7

docker run --name tomcat7 tomcat:7

 

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

image.png

其实打印的日志就是 catalina.sh run 命令运行之后的日志

 

栗子二

  • 使用镜像 tomcat:7
  • 以后台模式启动一个容器
  • 容器名字自定义为 tomcat7

docker run -d --name tomcat7 tomcat:7

image.png


创建容器之后还能执行其他命令,这样方便很多

 

栗子三

  • 使用镜像 tomcat:7
  • 以后台模式启动一个容器
  • 将容器的 8080 端口映射到主机的随机端口
  • 容器名字自定义为 tomcat9999

docker run -d -P --name tomcat9999 tomcat:7

image.png


栗子四

  • 使用镜像 tomcat:7
  • 以后台模式启动一个容器
  • 将容器的 8080 端口映射到主机的 9999 端口
  • 容器名字自定义为 tomcat7

docker run -d -p 9999:8080 --name tomcat7 tomcat:7

image.png


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

 

栗子五

  • 使用镜像 tomcat:7
  • 以后台模式启动一个容器
  • 将容器的 8080 端口映射到主机的 9999 端口
  • 容器名字自定义为 tomcat7
  • 主机的目录 /usr/local/tomcat/webapps 映射到容器的 /usr/local/tomcat/webapps
  • 以后直接在主机的 webapps 目录上传 war 包,就能在浏览器访问对应的项目

docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7

 

栗子六

  • 使用镜像 tomcat:7
  • 以后台模式启动一个容器
  • 将容器的 8080 端口映射到主机的 111.20.72.43:8888 端口
  • 容器名字自定义为 tomcat77
  • 主机的目录 /usr/local/tomcat/webapp 映射到容器 /usr/local/tomcat/webapps
  • 启动容器后,在容器内执行 bash 命令
  • 注意:这里不加 -it 的话,容器是无法再启动的,加上才能启动容器并执行 bash 命令

docker run -d -p 111.20.72.43:8888:8080 -v /usr/local/webapps:/usr/local/webapps -it --name tomcat77 tomcat:7 bash

 

栗子七

  • 容器 8080 端口映射到主机的 1111 端口
  • -it 以交互模式启动一个容器,在容器内执行 bash 命令
  • 注意:如果这里加了 -d  参数,则不会进入容器的 CLI 界面;如果不加 bash 命令,则会执行 tomcat 容器本身自动会执行的命令( catalina.sh run ),也会进不了 CLI 界面,因为会打印一堆运行日志

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

 

不加 bash的执行结果

image.png

加 bash的执行结果

image.png

顺利进入容器的 CLI 界面,此时再去运行服务也是可以的

 

栗子八

以 root 权限创建容器,当进入容器之后,拥有 root 权限去执行命令

docker run -d --name jenkin2 --privileged=true jenkins/jenkins

image.png

虽然是拥有了 root 权限,但并不一定是 root 用户身份,所以最好加 -uroot 指定 root 用户身份

 

不加 --privileged 的小栗子

image.png

即使加了 -uroot ,指定了 root 用户身份,但并不是真正拥有 root 权限

 

总结

  • -uroot:是给了 root 用户身份,但并没有真正的 root 权限
  • --privileged:真正让当前用户有了 root 权限
  • 若想要最高的权限,两者可以结合使用

 

栗子九

该容器在 Docker 重启后会自动启动无需手动启动

docker run -d --name jenkins2 --restart always jenkins/jenkins

image.png

  1. 创建了两个容器:jenkins2、jenkins3
  2. 重启 docker 服务
  3. 再次查看正在运行的容器,只有 jenkins2

 

退出容器


exit         #容器直接退出

ctrl +P +Q  #容器不停止退出     ---注意:这个很有用的操作

相关文章
|
12天前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
168 56
|
5天前
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令
|
5天前
|
运维 数据库 开发者
docker回顾--docker compose详细解释,安装,与常用命令
docker回顾--docker compose详细解释,安装,与常用命令
|
17天前
|
Linux Docker 容器
linux之docker命令
linux之docker命令
|
2天前
|
监控 Docker 容器
docker常用命令
本文汇总了Docker的常用命令,涵盖了镜像、容器、网络、数据卷的管理,以及系统信息查看、镜像构建、登录和注销Docker Hub,还有容器内部文件操作和事件监控,最后介绍了Docker Compose的使用方法。
14 0
|
5天前
|
Linux 应用服务中间件 Shell
docker学习--docker容器镜像常用命令大全(简)
本文档详细介绍了Docker中的镜像命令与容器管理命令。镜像命令部分涵盖了镜像搜索、下载、上传等操作;容器管理命令则包括了容器的创建、启动、停止、删除及日志查看等功能。通过具体示例,帮助用户更好地理解和使用Docker相关命令。
|
5天前
|
Shell 应用服务中间件 nginx
docker学习--最详细的docker run 各子命令解释与应用
`docker run` 是 Docker 中用于启动容器的基本命令。常用子命令包括 `-i`(交互模式)、`-t`(分配终端)、`-d`(后台运行)、`-p`(端口映射)、`--name`(指定容器名)。例如,`docker run -it nginx:1.20 /bin/bash` 可以创建并进入交互式容器。使用 `-d` 可在后台运行容器,`-p` 可将容器端口映射到主机端口,`--name` 则用于自定义容器名称以便管理。
|
15天前
|
Ubuntu Shell Docker
docker使用什么命令让时间恢复正确啊
docker使用什么命令让时间恢复正确啊
|
15天前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
|
2月前
|
Docker 容器
Docker 入门常用命令
Docker 入门常用命令
24 1