前言
在容器化技术的畛域中,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 权限 |
应用示例
- 应用
tomcat7
镜像,创立名为tomcat_hogwarts
的容器,如下:
docker run --name tomcat_hogwarts tomcat:7
这样运行,会间接将容器运行日志打印进去,所以个别都须要加 - d 参数,否则无奈持续敲其余命令
- 应用
tomcat7
镜像,创立名为tomcat_hogwarts01
的容器,并应用-d
参数,让其后盾运行,命令如下:
docker run -d --name tomcat_hogwarts01 tomcat:7
运行如下图:
通过 -d
参数创立容器,不影响咱们运行其余命令。
- 应用镜像
tomcat:7
当前台模式启动一个容器将容器的 8080 端口映射到主机的随机端口,命令如下:
docker run -d -P --name tomcat_muller tomcat:7
- 应用镜像 tomcat:7 当前台模式启动一个容器将容器的 8080 端口映射到主机的 8888 端口,命令如下:
docker run -d -p 8888:8080 --name tomcat_salah tomcat:7
能够看到 PORTS 一列,主机的 8888 端口指向了容器的 8080 端口。
- 应用镜像
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
- 容器 8080 端口映射到主机的 1111 端口
-it
以交互模式启动一个容器,在容器内执行 bash 命令
注:如果这里加了 -d
参数,则不会进入容器的 CLI 界面;如果不加 bash 命令,则会执行 tomcat 容器自身主动会执行的命令(catalina.sh run),也会进不了 CLI 界面,因为会打印一堆运行日志
docker run -it -p 1111:8080 tomcat:7 bash
- 以 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 权限
- 设置容器主动重启
docker run -d --name jenkins_salah --restart always jenkins/jenkins
- 退出容器
exit #容器间接退出
ctrl +P +Q #容器不进行退出 --- 留神:这个很有用的操作
总结
通过本文的介绍,置信大家曾经对 docker run
命令有了更深刻的了解。无论是根本的交互式运行,还是高级的数据卷挂载和端口映射,docker run
都能满足咱们在容器化利用开发和部署过程中的各种需要。