1.概述

本文章详细介绍Docker容器启动时常用选项的作用。

  1. docker run [选项] IMAGE [命令] [参数列表]

2.Docker运行容器选项实例演示

2.1 给容器设置名字 —name

容器通过镜像创建,同一个镜像可以创建多个容器,可以通过--name 为容器起名字来方便区分

  1. docker run --name hello ubuntu

通过docker ps -a 或者docker container ls -a 查看
image.png

2.2 让容器运行在后台 -d

我们可以发现运行完容器后,容器会自动的停止,因此我们需要然容器一直运行在后台。

  1. docker run --name backubuntu -d ubuntu

之后,你会发现 -d 并没有什么作用,依旧运行后就关闭。
这是因为对于ubuntu这样的服务器镜像,运行后如果不维持 输入开启, 就会退出sh 自然也没有什么运行的程序了。所以即使 加了 -d 也没有,所以请见下节

2.3 让容器等待输入 -i

  1. docker run -i --name hello01 ubuntu

image.png
它会维持一个输入,我们可以输入命令,使用 exit 退出,退出后容器才退出
因此如果想要让ubunt镜像后台运行的方式

  1. docker run -id --name hello04 ubuntu

image.png

2.4进入容器内部 -t

容器内也是一个linux系统,我们如何进入呢??

  1. docker run -it --name hello03 ubuntu

一定要和 -i 一起使用,否则无法进行输入
问题:如果我使用 -id 启动,如何进入当前正在运行的容器 docke exec

  1. docker run -id --name hello04 ubuntu

后台启动后可以使用以下方式进入容器内部

  1. docker exec -it hello04 /bin/bash

2.5如何关联容器内部的目录 -v

容器中的文件,我想要查看,可以通过2.4方式进入容器查看,但是太麻烦,而且不安全,若容器没了,文件也就没了。因此最好是可以将容器中的文件和 当前Linux主机的文件做关联。

2.5.1指定本地目录和容器挂载(具名挂载)

  1. docker run -it -v /home/work/:/home/ ubuntu

本机有个/home/work 目录,且有个a.txt
执行命令后进入容器的 /home目录下查看
image.png
变动/home/work下的内容,容器中的/home也随之变化。。。

2.5.2指定容器内要挂载的路径,并自动在本机生成挂在目录(匿名挂载)

  1. docker run -it --name ann -v /home ubuntu

-v目录只指定容器内路径,默认会为容器内/home 生成一个 随机字符串命名的目录 可以通过 docker volume查看。
image.png
这个目录生成 在 本机 的 /var/lib/docker/volumes
默认的如果你指明一个卷但是非全路径,docker默认在 /var/lib/docker/volumes 给你创建

  1. docker run -v gaoxi:/home ubuntu

image.png

2.6指定使用的网络 (—net)

指定你的容器在那个网络下。

  1. docker run -it --net gx ubuntu

image.png
通过 docker inspect 查看容器信息可以发现 gx网络被配置

2.7映射端口 (-p)

docker中启动的服务想要被外部访问,需要映射端口。

  1. docker run -p 8081:80 nginx

2.8配置容器内的环境变量

docker容器中其实也是有个系统的,那么如何在容器启动时给其设置环境变量呢。
1.key-value设置方式

  1. docker run -it -e name=gaoxi ubuntu

image.png
2.若想要将本地的环境变量直接放入容器

  1. docker run -it -e PATH ubuntu

image.png
3.通过记录key=value的文件
使用 --env-file 不再演示

注:当然选项还有很多,使用时可以参考官方文档。

3.Docker运行容器命令实例演示

此处要说的是下面这幅图中标注位置要写什么?
image.png

3.1实例展示

1.运行容器后打印文件

  1. docker run ubuntu ls

image.png

2.运行容器执行pwd命令

  1. docker run -it ubuntu pwd

image.png
3.运行容器后执行一个 /bin/sh 命令

  1. docker run -it ubuntu /bin/sh

image.png

3.2个人理解

命令位置的东西就是容器运行后,立即执行的命令。
如何查看容器运行后执行的命令是什么呢?

  1. docker run -id ubuntu

image.png
可以看到ubuntu镜像默认启动容器后执行的是 /bin/bash命令。
因此如果指定了命令,就会代替镜像指定的命令 如图所示:
image.png
有些镜像并无法通过命令行指定,具体规则等到DockerFile中讨论

4.Docker运行容器命令参数列表实例演示

这节说的是:
image.png
举个例子即可

  1. docker run -it ubuntu ls /lib -a
  2. docker run [选项] IMAGE [命令] [参数列表]

image.png