1.概述
本文章详细介绍Docker容器启动时常用选项的作用。
docker run [选项] IMAGE [命令] [参数列表]
2.Docker运行容器选项实例演示
2.1 给容器设置名字 —name
容器通过镜像创建,同一个镜像可以创建多个容器,可以通过--name
为容器起名字来方便区分
docker run --name hello ubuntu
通过docker ps -a
或者docker container ls -a
查看
2.2 让容器运行在后台 -d
我们可以发现运行完容器后,容器会自动的停止,因此我们需要然容器一直运行在后台。
docker run --name backubuntu -d ubuntu
之后,你会发现 -d 并没有什么作用,依旧运行后就关闭。
这是因为对于ubuntu这样的服务器镜像,运行后如果不维持 输入开启, 就会退出sh 自然也没有什么运行的程序了。所以即使 加了 -d 也没有,所以请见下节
2.3 让容器等待输入 -i
docker run -i --name hello01 ubuntu
它会维持一个输入,我们可以输入命令,使用 exit 退出,退出后容器才退出
因此如果想要让ubunt镜像后台运行的方式
docker run -id --name hello04 ubuntu
2.4进入容器内部 -t
容器内也是一个linux系统,我们如何进入呢??
docker run -it --name hello03 ubuntu
一定要和 -i 一起使用,否则无法进行输入
问题:如果我使用 -id 启动,如何进入当前正在运行的容器 docke exec
docker run -id --name hello04 ubuntu
后台启动后可以使用以下方式进入容器内部
docker exec -it hello04 /bin/bash
2.5如何关联容器内部的目录 -v
容器中的文件,我想要查看,可以通过2.4方式进入容器查看,但是太麻烦,而且不安全,若容器没了,文件也就没了。因此最好是可以将容器中的文件和 当前Linux主机的文件做关联。
2.5.1指定本地目录和容器挂载(具名挂载)
docker run -it -v /home/work/:/home/ ubuntu
本机有个/home/work 目录,且有个a.txt
执行命令后进入容器的 /home目录下查看
变动/home/work下的内容,容器中的/home也随之变化。。。
2.5.2指定容器内要挂载的路径,并自动在本机生成挂在目录(匿名挂载)
docker run -it --name ann -v /home ubuntu
-v目录只指定容器内路径,默认会为容器内/home 生成一个 随机字符串命名的目录 可以通过 docker volume
查看。
这个目录生成 在 本机 的 /var/lib/docker/volumes
下
默认的如果你指明一个卷但是非全路径,docker默认在 /var/lib/docker/volumes
给你创建
docker run -v gaoxi:/home ubuntu
2.6指定使用的网络 (—net)
指定你的容器在那个网络下。
docker run -it --net gx ubuntu
通过 docker inspect
查看容器信息可以发现 gx网络被配置
2.7映射端口 (-p)
docker中启动的服务想要被外部访问,需要映射端口。
docker run -p 8081:80 nginx
2.8配置容器内的环境变量
docker容器中其实也是有个系统的,那么如何在容器启动时给其设置环境变量呢。
1.key-value设置方式
docker run -it -e name=gaoxi ubuntu
2.若想要将本地的环境变量直接放入容器
docker run -it -e PATH ubuntu
3.通过记录key=value的文件
使用 --env-file
不再演示
3.Docker运行容器命令实例演示
3.1实例展示
1.运行容器后打印文件
docker run ubuntu ls
2.运行容器执行pwd命令
docker run -it ubuntu pwd
3.运行容器后执行一个 /bin/sh 命令
docker run -it ubuntu /bin/sh
3.2个人理解
命令位置的东西就是容器运行后,立即执行的命令。
如何查看容器运行后执行的命令是什么呢?
docker run -id ubuntu
可以看到ubuntu镜像默认启动容器后执行的是 /bin/bash命令。
因此如果指定了命令,就会代替镜像指定的命令 如图所示:
有些镜像并无法通过命令行指定,具体规则等到DockerFile中讨论
4.Docker运行容器命令参数列表实例演示
这节说的是:
举个例子即可
docker run -it ubuntu ls /lib -a
docker run [选项] IMAGE [命令] [参数列表]