深入理解 Docker Run 命令:从入门到精通
在容器化技术的领域中,Docker 无疑是最为广泛使用的工具之一。而docker run命令则是使用 Docker 进行容器管理的核心命令之一。本文将深入探讨docker run命令的使用方法,旨在帮助初学者快速入门并掌握该命令的各种用法。docker run命令用于在 Docker 中运行一个容器。它可以基于指定的镜像创建并启动一个新的容器实例。docker run其中,OPTIONS是一系列用
前言
在容器化技术的领域中,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
都能满足我们在容器化应用开发和部署过程中的各种需求。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)