docker容器生命周期管理 docker run命令

docker run :创建一个新的容器并运行一个命令, 镜像IMAGE后,可跟随命令[COMMAND],在容器中运行。

  • -d: 后台运行容器,并返回容器ID;

(需注意的是:*****后台运行容器,必须有一个前台进程,否则docker会自动停止该容器*****)

  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

进入容器终端,可通过exit命令退出容器终端

  • -P: 随机端口映射,容器内部端口随机映射到主机的端口;
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 ;

运行nginx,nginx默认端口80。将容器内部80映射到主机3344端口

然后即可通过主机3344端口访问容器80端口。

  • –name=”nginx-lb”: 为容器指定一个名称;

另开一个容器,命名为nginx02

  • –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  • -h “mars”: 指定容器的hostname;
  • -e username=”ritchie”: 设置环境变量;
  • –env-file=[]: 从指定文件读入环境变量;
  • –cpuset=”0-2″ or –cpuset=”0,1,2″: 绑定容器到指定CPU运行;
  • –gpus :指定使用的gpu,all全部使用

使用GPU前,需先安装nvidia-docker,安装见nvidia-docker安装指引

  • -m :设置容器使用内存最大值;
  • –net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container:<name|id> 四种类型;</name|id>
  • –link=[]: 添加链接到另一个容器;
  • –expose=[]: 开放一个端口或一组端口;
  • –volume , -v: 绑定一个卷

在主机home下新建一个centos01_home,并新建一个test.py文件

新建容器,并绑定 主机目录/home/centos01_home 到 容器 /home,此时容器可通过/home访问主机目录/home/centos01_home下文件

通过容器在/home下新建文件,主机/home/centos01_home目录下也会新建文件(挂载后,容器对挂载目录的操作,实际均是对主机挂载目录的操作

  • –volumes-from 从指定的容器挂载卷

启动一个容器centos01,具名挂载一个卷,挂载的卷为volume_test,通过容器centos01在volume_test下创建一个文件 test.py

启动第二个容器 centos02,从centos01挂载卷,可以发现,centos02挂载了volume_test,通过容器centos02创建一个test02.py。

在容器centos01与centos02中都可以看到创建的文件。实现了容器间数据的共享。

退出容器终端

  • exit  停止容器并退出

  • ctrl + p + q  不停止容器退出