docker run
创建一个新的容器并运行容器;
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用选项参数:
- -d: 后台运行容器,并返回容器 ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- –name=“nginx-lb”: 为容器指定一个名称;
- -h “mars”: 指定容器的 hostname;
- -e username=“ritchie”: 设置环境变量;
- –cpuset-cpus=“0-2” or --cpuset-cpus=“0,1,2”: 绑定容器到指定 CPU 运行;
- -m :设置容器使用内存最大值;
- –network=“bridge”: 指定容器的网络连接类型;
- –link=[]: 添加链接到另一个容器;
- –volume , -v: 绑定一个卷
- –rm :shell 退出的时候自动删除容器
运行一个centos7镜像的容器(参数 -it)
参数-i和-t共同使用,为-it
先拉取一个镜像:
docker pull centos:7
运行一个容器,并且通过bash进行交互:
docker run -it centos:7 bash
这是centos容器的hostname
:
宿主机的hostname:
查看容器的版本:
cat /etc/*release*/
运行nginx容器(参数-d)
docker run nginx:1.23.4
查得到它在运行:
由于是在前台运行,所以能通过exit进行退出;
后台运行,会返回一个id码出来:
docker run -d nginx:1.23.4
对参数-i、-t单独讲解
-i
表示以交互方式运行容器
-t
表示为容器重新分配一个伪输入终端
进入了centos容器,但没有一个终端界面;
输入指令 查看进程:
只运行-t的参数:
给出了伪终端界面,但输入指令没有反应;
所以我们经常将这两个参数一起使用;
参数-p
通过端口映射运行一个nginx容器
docker run -d -p 8081:80 nginx:1.23.4
nginx容器在后台运行,并且容器80端口映射到宿主机的8081端口上
通过在网页访问宿主机8081端口访问到容器nginx:
参数 -P
docker run -d -P nginx:1.23.4
随机映射端口:
可以看到映射端口为32768;
宿主机查看对应端口:
由于存在
随机性
,所以我们一般不适用-P,而使用参数-p来指定对应端口
参数 --name
可以看到,通过命令 docker ps
查看,容器名字是随机的:
所以,可以通过选项 --name
来进行配置一个容器名:
docker run -d --name mynginx nginx:1.23.4
参数 -h
之前配置的容器查看hostname都是跟着随机ID命名的:
通过-h 选项可以配置一个hostname:
docker run -it -h 112233 centos:7 bash
参数 -e
设置容器的环境变量 :
docker run -it -h 112233 -e myenv=1122 centos:7 bash
通过命令 env
进行查看:
参数 --cpuset-cpus
绑定容器到指定cpu运行:
docker run -d --name mynginx1 --cpuset-cpus="0-1" nginx:1.23.4
参数 -m
docker stats
查看默认的给定内存为1.9G:
设置内存为500m:
参数 --link
开启 mycentos1 , mycentos2连接到mycentos1,然后ping一下:
docker run -it --name mycentos2 --link mycentos1:mywebsite1 centos:7 bash
参数 --rm
像我们之前退出的容器,仍然还存在着,只是暂停运行而已:
docker ps -a
设置参数–rm,退出时,会自动删除容器
docker run -it --name mycentos4 --rm centos:7 bash
退出容器后: