前言

在容器化技术的畛域中,Docker 无疑是最为宽泛应用的工具之一。而 docker run 命令则是应用 Docker 进行容器治理的外围命令之一。本文将深入探讨 docker run 命令的应用办法,旨在帮忙初学者疾速入门并把握该命令的各种用法。

Docker Run 简介

docker run 命令用于在 Docker 中运行一个容器。它能够基于指定的镜像创立并启动一个新的容器实例。docker run 命令的根本语法如下:

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

其中,OPTIONS 是一系列用于配置容器运行形式的选项,IMAGE 是要运行的容器镜像,COMMAND 是在容器外部执行的命令,ARG 是传递给命令的参数。

docker run 执行流程

首先在指定镜像上创立一个可写的容器层

而后应用指定的命令(COMMAND)启动它

docker run 相当于执行了两个 API:/containers/create/containers/(id)/start

罕用参数

option作用
-i以交互模式运行容器,通常与 -t 同时应用
-t启动容器后,为容器调配一个命令行,通常与 -i 同时应用
-v目录映射,容器目录挂载到宿主机目录,格局: <host目录>:<容器目录>
-d守护过程,后盾运行该容器
-p指定端口映射,格局:主机(宿主)端口:容器端口
-P随机端口映射,容器外部端口随机映射到主机的端口(49153起始 49153到65535)
-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 权限

应用示例

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

这样运行,会间接将容器运行日志打印进去,所以个别都须要加 -d参数,否则无奈持续敲其余命令

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

运行如下图:


通过-d参数创立容器,不影响咱们运行其余命令。

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

  1. 应用镜像 tomcat:7 当前台模式启动一个容器将容器的 8080 端口映射到主机的 8888 端口,命令如下:
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 命令,命令如下:
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 界面,因为会打印一堆运行日志

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

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

不加 --privileged的例子

# 创立容器docker run -d --name jenkins_muller jenkins/jenkins# 进入容器docker exec -it -uroot jenkins_muller bash

注:

  • -uroot:是给了 root 用户身份,但并没有真正的 root 权限
  • --privileged:真正让以后用户有了 root 权限
  1. 设置容器主动重启
docker run -d --name jenkins_salah --restart always jenkins/jenkins
  1. 退出容器
exit         #容器间接退出ctrl +P +Q  #容器不进行退出     ---留神:这个很有用的操作

总结

通过本文的介绍,置信大家曾经对 docker run 命令有了更深刻的了解。无论是根本的交互式运行,还是高级的数据卷挂载和端口映射,docker run 都能满足咱们在容器化利用开发和部署过程中的各种需要。