Docker实践-------多服务启动,仓库管理,stress控制

本文介绍了如何在Docker中使用Supervisord进行多服务启动,解析了CMD与ENTRYPOINT的区别和用法,探讨了Docker的安全控制,如限制权限和内存控制。同时,详细阐述了如何通过stress工具测试内存使用,并利用cgroups进行资源配额管理。此外,还提及了Docker仓库的管理和镜像存储位置。
摘要由CSDN通过智能技术生成

supervisord多服务启动

如果需要一个容器中运行多个服务,可以使用Supervisord 来进行进程管理,方式就是将多个
启动命令放入到一个启动脚本中。

##需要准备的文件
[root@18 docker]# tree .
.
├── Dockerfile            ##build时编译文件
├── dvd.repo              ##主机yum源
├── ssh   
│   └── Dockerfile              
├── supervisord.conf
└── web
    └── index.html

配置:

[root@18 docker]# cat Dockerfile 
FROM rhel7
ENV HOSTNAME server2
EXPOSE  80 22
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN rpmdb --rebuilddb && yum clean all && yum install -y httpd openssh-clients openssh-server supervisor && mkdir -p /var/log/supervisor && ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" && ssh-keygen -q -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
RUN echo root:westos | chpasswd
COPY supervisord.conf /etc/supervisord.conf
CMD ["/usr/bin/supervisord"]
[root@18 docker]# cat ssh/Dockerfile 
FROM rhel7
ENV HOSTNAME server2
EXPOSE 22
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN rpmdb --rebuilddb && yum install -y openssh-server && yum clean all
RUN echo root:westos | chpasswd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N ""
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -q -N ""
CMD ["/usr/sbin/sshd", "-D"]
[root@18 docker]# cat supervisord.conf 
[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

[program:httpd]
command=/usr/sbin/httpd
[root@18 docker]# cat dvd.repo 
[dvd]
name=rhel7.3
baseurl=http://172.25.254.250/rhel7.3
gpgcheck=0

[docker]
name=docker
baseurl=http://172.25.254.250/pub/docker/
gpgcheck=0
[root@18 docker]# cat web/index.html 
<h1>Docker</h1>

1.编译

[root@18 docker]# docker build -t rhel7:v1 .

2.运行

[root@18 docker]# docker run -d --name vm1 -v /tmp/docker/web:/var/www/html rhel7:v1

3.测试

[root@18 ssh]# curl 172.17.0.2
<h1>Docker</h1>
[root@18 ~]# ssh -l root 172.17.0.2
root@172.17.0.2's password: 
-bash-4.2# 

CMD 与 ENTRYPOINT

ENTRYPOINT 容器启动后执行的命令,让容器执行表现的像一个可执行程序一样,与
CMD 的 区 别 是 不 可 以 被 docker run 覆 盖 , 会 把 docker run 后 面 的 参 数 当 作 传 递 给
ENTRYPOINT 指令的参数。Dockerfile 中只能指定一个 ENTRYPOINT,如果指定了很多,
只 有 最 后 一 个 有 效 。 docker run 命 令 的 -entrypoint 参 数 可 以 把 指 定 的 参 数 继 续 传 递 给
ENTRYPOINT。

首先测试下CMD的功能:

[root@18 test]# cat Dockerfile 
FROM rhel7
CMD echo "hello world"
[root@18 test]# docker run --rm rhel7:v2
hello world
##验证CMD命令可被覆盖
[root@18 test]# docker run --rm rhel7:v2 echo westos
westos
##显然,使用ENTRYPOINT可以让操作不受到干预。
[root@18 test]# cat Dockerfile 
FROM rhel7
ENTRYPOINT echo "hello world"

[root@18 test]# do
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值