docker-run

run 的时候先会查看本地是否有此镜像

如果没有则 pull :latest

run = create + exec

sudo docker run -it --rm alpine
1

常用的短指令

短指令含义备注
-it打开输入并分配一个tty一般进入容器会用
--rm容器用完即删
-p暴露端口
--name指定容器名控制友好型参数
-v挂载文件夹相当于ln到容器中
-w指定工作目录约等于进入后cd到此目录
-h指定容器hostname
-d后台启动
Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
  -a, --attach list                    Attach to STDIN, STDOUT or STDERR
  -d, --detach                         Run container in background and print container ID
      --entrypoint string              Overwrite the default ENTRYPOINT of the image
  -e, --env list                       Set environment variables
      --expose list                    Expose a port or a range of ports
  -h, --hostname string                Container host name
  -i, --interactive                    Keep STDIN open even if not attached
  -m, --memory bytes                   Memory limit
      --mount mount                    Attach a filesystem mount to the container
      --name string                    Assign a name to the container
  -p, --publish list                   Publish a container's port(s) to the host
      --rm                             Automatically remove the container when it exits
  -t, --tty                            Allocate a pseudo-TTY
  -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>])
  -v, --volume list                    Bind mount a volume
  	  --read-only                      Mount the container's root filesystem as read only
  -w, --workdir string                 Working directory inside the container
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

端口映射

TIP

可以只暴露 不发布 然后通过内网docker0访问

暴露端口 expose

暴露:容器开放能访问的端口

docker run -d nginx
# docker ps 能看见容器80端口已暴露 但是主机(`localhost`)无法访问
1
2

docker ps 查看容器信息 仅列出

PORTS
80/tcp

暴露方式

  1. 在Dockerfile里
EXPOSE 80
1
  1. docker run --expose ports

发布端口 publish

发布:让主机能够访问容器端口

-p [<binding address>]:<host port>:<container port>[/tcp|/udp]

-p 80

随机分配一个端口映射到容器80端口

PORTS
:::49153->80/tcp

-p 80:80

指定映射到容器80端口的端口

PORTS
:::80->80/tcp

-p 127.0.0.1:80:80

指定映射到容器80端口的端口和限制访问的IP

PORTS
127.0.0.1:80->80/tcp