欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker run

程序员文章站 2022-05-15 13:10:18
...

docker run

构建容器的实质:为进程封箱
​ 启动一个进程,使用独立的文件系统、网络资源,一套独立的进程树。

语法:
docker run [options] IMAGE [[CMD] ARG…]

选项

–add-host=[ ]
​ 添加一条主机到 ip 的映射,可以多次出现

–cidfile=""
​ 容器id 文件,类似于 pid 文件

-d --detach=true|false
​ 在后台运行容器,并打印容器 id

–dns=[ ]
​ 设置 dns 地址

-e --env=[ ]
为容器的目标进程指定环境变量

–expose=[ ]
​ 暴露端口

-h --hostname=""
​ 指定主机名

-i --interactive=true|false
​ 默认 false

–ip=""
​ 设置容器 ip

–ip6=""
​ 设置容器 ipv6 地址

–name=""
​ 为容器分配一个名字

-P --publish-all=true|false
​ 暴露所有的容器端口,映射到主机的随机端口
​ 默认:false

-p --public=[ ]
​ 暴露容器端口到指定的主机端口
​ 格式:ip:hPort:cPort、ip::cPort、hPort:cPort、cPort
​ 默认值:ip 0.0.0.0、hPort:随机数

实例

创建一个容器

$ docker run -d --name tomcat8 tomcat:8.5
$ docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1 mysql:5

映射端口供外部使用

  • 大写 P 作为参数,hPort随机
$ docker run -d --name tomcat8_6 -P tomcat:8.5
fd60a0ccd8914376cbe5df0bb2188c0e569605c3abfe9a0c4205999525274c2a
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
fd60a0ccd891        tomcat:8.5          "catalina.sh run"   6 seconds ago       Up 6 seconds        0.0.0.0:32768->8080/tcp   tomcat8_6
$ list
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::32768                :::*                    LISTEN      8755/docker-proxy-c 
  • 格式:-p cPort
$ docker run -d --name tomcat8_6 -p 8080 tomcat:8.5
5eaf18f6d093033aa27cdb389117ed4f82b6b2bee0e223405e20d895bef35241
$ list
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::32769                :::*                    LISTEN      9070/docker-proxy-c 
  • 格式:-p hPort:cPort
$ docker run -d --name tomcat8_6 -p 80:8080 tomcat:8.5
22080f13c145430f200aa48d9c32307f55fd9b42155f6d6a52ae4dec24442627
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
22080f13c145        tomcat:8.5          "catalina.sh run"   6 seconds ago       Up 5 seconds        0.0.0.0:80->8080/tcp   tomcat8_6
$ list
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::80                   :::*                    LISTEN      9312/docker-proxy-c 
  • 格式:-p ip::cPort
$ docker run -d --name tomcat8_6 -p 127.0.0.1::8080 tomcat:8.5
3956a73e0219340ed529c1a1ac902562c2434032c92bb746b0416a5c9fd9db04
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                       NAMES
3956a73e0219        tomcat:8.5          "catalina.sh run"   4 seconds ago       Up 4 seconds        127.0.0.1:32768->8080/tcp   tomcat8_6
$ list
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:32768         0.0.0.0:*               LISTEN      9502/docker-proxy-c 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1138/sshd   
  • 格式:-p ip:hPort:cPort
$ docker run -d --name tomcat8_6 -p 127.0.0.1:8000:8080 tomcat:8.5
bc4dcfdd3c0bfe05657ccca77ea1e61c33222b2c2fa59b7af99939f268616442
$ list
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      9749/docker-proxy-c

创建并加载数据卷容器


加载外部卷

# 挂在主机目录作为容器卷
$ docker run -v /var/db:/data1 -i -t fedora bash

# 主机开启 SELinux,执行会报错。须执行:
$ chcon -Rt svirt_sandbox_file_t /var/db
相关标签: Docker