容器管理

Posted smail-bao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器管理相关的知识,希望对你有一定的参考价值。

  创建容器的常用选项

  管理容器的常用命令

1、创建容器的常用选项

 

指令 描述 资源限制指令 描述
-i, --interactive 交互式 -m, --memory 容器可以使用的最大内存量
-t, --tty 分配一个伪终端 --memory-swap 允许交换到磁盘的内存量
-d, --detach 运行容器到后台 --memory-swappiness=<0-100> 容器使用SWAP分区交换的百分比( 0-100,默认为-1)
-a, --attach list 附加到运行的容器 --memory-reservation 内存软限制, Docker检测主机容器争用或内存不足时所激活的软
限制,使用此选项,值必须设置低于—memory,以使其优先
--dns list 设置DNS服务器 --oom-kill-disable 当宿主机内存不足时,内核会杀死容器中的进程。建议设置了-
memory选项再禁用OOM。如果没有设置,主机可能会耗尽内存
-e, --env list 设置环境变量 --cpus 限制容器可以使用几个可用的CPU资源
--env-file list 从文件读取环境变量 --cpuset-cpus 限制容器可以使用特定的CPU
-p, --publish list 发布容器端口到主机(宿主机和容器的端口映射) --cpu-shares 此值设置为大于或小于默认1024值,以增加或减少容器的权重,
并使其可以访问主机CPU周期的更大或更小比例
-P, --publish-all 发布容器所有EXPOSE的端口到宿主机随机端口
-h, --hostname string 设置容器主机名
--ip string 指定容器IP,只能用于自定义网络
--link list 添加连接到另一个容器
--network 连接容器到一个网络
--mount mount 挂载宿主机分区到容器
-v, --volume list 挂载宿主机目录到容器
--restart string 容器退出时重启策略,默认no
[always|on-failure]
--add-host list 添加其他主机到容器中/etc/hosts(容器中hosts文件中添加ip和主机的解析)



先创建容器

 

[[email protected] ~]# docker container run -itd --name bs busybox
1ab0200029d705fabaa658ec98c434ea697542ad48bd7cee25d84e0c07375b8e

run 创建容器(Run a command in a new container)
bs  容器名
busybox 镜像名
1ab0200029d705fabaa658ec98c434ea697542ad48bd7cee25d84e0c07375b8e  容器id

  

[[email protected] ~]# docker container attach bs   #进入一个容器名为bs的容器
/ # ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:AC:1E:27:02  
          inet addr:172.30.39.2  Bcast:172.30.39.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:648 (648.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

容器内执行exit 之前:

[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ab0200029d7 busybox "sh" 17 minutes ago Up 6 minutes bs

执行exit之后,我们会发现我们运行的进程没了:
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

这样之后我们可以操作启动镜像

[[email protected] ~]# docker container start bs
bs

  

[[email protected] ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1ab0200029d7        busybox             "sh"                7 minutes ago       Up 6 minutes                            bs
查看运行容器有哪些

 

 

/ # mount  
/dev/mapper/centos-root on /etc/resolv.conf type xfs (rw,relatime,attr2,inode64,noquota)
/dev/mapper/centos-root on /etc/hostname type xfs (rw,relatime,attr2,inode64,noquota)
/dev/mapper/centos-root on /etc/hosts type xfs (rw,relatime,attr2,inode64,noquota)
 容器内执行mount命令,会有很多文件挂载,我们先看这三个,都会默认从宿主机挂载这三个文件,在容器重启,创建操作(都会重新挂载),我们在容器内修改这三个文件,重启之后都不会生效的(会丢失)。

这里我么也可以通过下面的方式进入容器,这样的话,我们执行exit 的时候他不会让容器停止
[[email protected] ~]# docker exec  -it bs sh
/ # exit

  

[[email protected] ~]# docker container run -itd -p 8082:80 -h docker-nginx --name nginx8 --restart=always nginx:v1.7.9 
603494fada81eca4e6aa5805eca6c3c8846b58fca2f4e836b93f8f24ec05cc19

比如这个就是我们创建一个交互式的容器,镜像使用nginx:v1.7.9,容器名为nginx8,创建后的容器主机名是docker-nginx,做一个端口映射,宿主机的8082映射容器的80端口,同时我们加上--restart=always,容器退出时的重启策略是always
--restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。
--restart的参数说明:
always:无论容器的退出代码是什么,Docker都会自动重启该容器。
on-failure:只有当容器的退出代码为非0值的时候才会自动重启。另外,
该参数还接受一个可选的重启次数参数,`--restart=on-fialure:5`表示当容器退出代码为非0时,Docker会尝试自动重启该容器,最多5次。

  

 创建容器的时候我们应该根据我们的业务场景来进行资源的限制

 

















以上是关于容器管理的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git 来管理 Xcode 中的代码片段

提交带有全屏片段的片段事务

massCode 一款优秀的开源代码片段管理器

如何管理在每个 git 版本中添加私有代码片段?

如何在 Android 中的特定片段容器中显示片段

尝试将片段添加到我的片段容器 FrameLayout