docker run

docker run命令演示

功能

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

语法

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

别名 docker container run

参数

**-d:**后台运行容器,并返回容器 ID;

**-i:**以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机 ( 宿主 ) 端口 : 容器端口

**-t:**为容器重新分配一个伪输入终端,通常与 -i 同时使用;

**--name="nginx-lb":**为容器指定一个名称;

**-h "mars":**指定容器的 hostnam

**-e username="ritchie":**设置环境变量;

**--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2":**绑定容器到指定 CPU 运行;

**-m :**设置容器使用内存最大值;

**--network="bridge":**指定容器的网络连接类型;

**--link=[]:**添加链接到另一个容器;

**--volume , -v:**绑定一个卷

--rm:shell 退出的时候自动删除容器

比如

#使用 docker 镜像 nginx:latest 以后台模式启动一个容器,并将容器命名为 mynginx。 docker run --name mynginx -d nginx:latest

#使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主 机的 80 端口,主机的目录 /data 映射到容器的 /data。

docker run -p 80:80 -v /data:/data -d nginx:latest

无参运行

演示在ubuntu上创建一个centos容器

centos默认命令是bin/bash,但是这里没有进行长时交互的命令,所以就没有任何效果

查看有没有创建容器,

执行 docker ps 查看运行的容器

执行 docker ps -a 查看所有创建的容器

使用长时交互命令运行实例,加上参数 -it, 执行docker run -it centos:7.5.1804

使用ps查看运行时容器

执行exit退出centos容器

-d参数

-d参数,指定后台运行

nginx镜像进行前台运行和后台运行

查看运行 时容器

然后对nginx进行退出,ctrl c退出

再次查看所有创建的容器

前台运行如果按了ctrl c退出,或者网络断开导致shell断开,容器就退出了。

使用 -d 选项 进行后台运行够否防止前台误操作,执行命令 docker run -d nginx:1.24.0

查看运行时容器

-it参数

-it参数 指定容器提供伪终端和交互能力

-it 选项就是 进行命令行输入后,能够像shell一样正常交互。命令执行完之后,会有回馈的显示,并再显示一个终端再次交互。 执行exit退出容器

-i参数

-i参数 指定容器具有交互能力

-i选项 就是能和容器进行交互,但是没有终端的显示。 执行exit退出容器

-t参数

-t参数 指定容器提供伪终端

-t选项 只是提供一个伪终端,但是不能提供交互的能力,输入 比如 ps -ef之后,并没有反馈

-P参数

-P参数 容器内部端口随机映射到主机端口

由于这个端口并没有在防火墙打开,所以在宿主机上进行访问,输入 curl 127.0.0.1:32768

-p参数

-p参数指定 宿主机和容器端口映射,格式为:主机(宿主)端口:容器端口

在web端访问宿主机的8081端口

--name参数

--name参数是为容器指定一个名称

之前未指定名称时,名称是引擎随机起的名字,并不好记忆。自己为容器起一个好记的名字,方便和容器交互。

比如执行命令 docker stop myNginx,关掉myNginx服务

-h参数

-h参数是指定容器的hostname

使用-h指定后的效果

-e参数

-e参数是设置容器的环境变量

--cpuset-cpus参数

--cpuset-cpus参数是 绑定容器到指定cpu运行

首先查看cpu的信息,执行命令 cat /proc/cpuinfo,确定自己是几核的cpu

我目前是双核的cpu。

执行命令docker run -d --name myNginx1 --cpuset-cpus="0-1" nginx:1.24.0

这里执行命令 我是让myNginx1 在我的双核cpu上去跑。

我再改一下没在单核上去跑

-m参数

-m参数是设定容器使用内存的最大值

首先运行一个容器,不指定其内存最大值

查看这个容器的内存限制

执行命令 docker stats myNginx4

其内存上限为1.9个g左右

查看服务器的内存,执行命令 free -m

而服务器的内存也才1.9g左右。

现在创建一个容器,指定其内存上限,

执行命令 docker run -d --name myNginx5 -m 500m nginx:1.24.0

查看两个容器内存限制,执行命令 docker stats myNginx4 myNginx5

可以看到这个容器的内存上限就设定为了500M

--link参数

--link参数是把一个容器链接到另一个容器,这样就能访问另外一个容器的网络

首先开启一个容器,执行命令 docker run -it --name myCentos1 centos:7.5.1804

然后再 复制会话,开启另一个容器, 执行命令链接myCentos1 docker run -it --name myCentos2 --link myCentos1:mywebsite1 centos:7.5.1804,其中myCentos1:mywebsite1是给myCentos1起别名为mywebsite1

在myCentos2容器中就能ping通myCentos1的网络了,也能ping通别名的网络

本质上是在 /etc/hosts 中对myCentos1的ip地址做了本地dns解析

这里myCentos2能ping通myCentos1,但是myCentos1不能ping通myCentos2

--rm参数

--rm参数 是shell退出的时候自动删除容器

创建一个容器 执行命令docker run -it --name myCentos3 centos:7.5.1804

在复制会话查看运行容器 执行命令docker ps

将容器退出后,查看运行容器,myCentos3就没有了

但是查看所有创建的容器,执行命令 docker ps -a

虽然容器退出了,但是这条记录 依然在所有创建的容器中。

现在创建一个容器,指定--rm参数。执行命令 docker run -it --name myCentos4 --rm centos:7.5.1804

查看运行时容器

将容器退出,再查看所有创建的容器,执行命令 docker ps -a | grep myCentos4

可以看到,在退出容器后,容器的信息在创建的所有容器中都没有记录了。因为指定--rm参数之后,容器在退出后,会自动完成清理

docker ps命令演示

功能

列出容器

语法

docker ps [OPTIONS]

别名 docker container ls, docker container list, docker container ps

参数

**-a :**显示所有的容器,包括未运行的

**-f :**根据条件过滤显示的内容

**--format :**指定返回值的模板文件。如 json 或者 table

**-l :**显示 latest 的容器。

**-n :**列出最近创建的 n 个容器。

**--no-trunc :**不截断输出。

**-q :**静默模式,只显示容器编号。

**-s :**显示总的文件大小。

比如

docker ps -a

-a参数

-a参数 显示所有的容器,包括未运行的

-f参数

-f参数 根据条件过滤显示的内容

对myNginx5容器进行个过滤

--format参数

--format参数 指定返回值的模板文件。如 json 或者 table

-l参数

-l参数 显示 latest 的容器。

-n参数

-n参数 列出最近创建的 n 个容器。

--no-trunc参数

--no-trunc参数 不截断输出。

-q参数

-q参数 静默模式,只显示容器编号。

-s参数

-s参数 显示总的文件大小。

相关推荐
linweidong2 小时前
顺丰运维面试题及参考答案
运维·nginx·容器·ansible·运维开发·防火墙·python面试
叽里咕噜怪2 小时前
Docker-基础
运维·docker·容器
田里的水稻2 小时前
运维_SOC芯片的架构综述
运维·架构
太行山有西瓜汁2 小时前
达梦DTS工具:批量导出与导入DDL脚本完整指南
运维·服务器·数据库
蓝晶之心2 小时前
Linux rsync ssh方式数据备份
linux·运维·服务器
fengyehongWorld3 小时前
Linux sudo命令
linux·运维·服务器
WG_173 小时前
Linux:缓冲区_glibc封装
linux·运维·服务器
番知了3 小时前
Ubuntu 22.04 常用命令清单
linux·运维·ubuntu
旺仔Sec3 小时前
2026年河北省职业院校技能大赛“网络系统管理”(高职组)网络构建样题
运维·服务器·网络