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参数 显示总的文件大小。
