Docker部署Centos7
经常需要我们自己准备好一个基础服务器来安装各种程序 , 我不建议使用Alpine ,虽然很小, 但实际用时还是要装很多包,甚至在部署会又遇到各种缺包不支持等 ;
我这边是用了常见且稳定的Centos7 ,官方镜像也才200来M.
1. 下载镜像
docker pull centos:7.6.1810
myzmac:Oracle myz$ docker images centos:7.6.1810
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.6.1810 f1cb7c7d58b7 11 months ago 202MB
2. 自定义网络(可选)
一般自用可用默认的网桥或HOST等方式(但不能对容器固定IP,只能端口映射)
但在生产环境是要自定义网络
docker network ls
#docker network rm mynet
docker network create --subnet=2.2.2.0/24 mynet
docker network inspect mynet
2. 创建容器
docker run -e TZ="Asia/Shanghai" -itd -h cent76_21 --name cent7621 -m 512m centos:7.6.1810 init
--使用自定义网络,及指定IP
docker run -e TZ="Asia/Shanghai" -itd -h cent76_21 --name cent7621 -m 512m --network=mynet2 --ip 2.2.2.21 centos:7.6.1810 init
注意:
--privileged 为容器内获得root管理权限,比如使用systemctl , 不然报错:
[root@cent76]# systemctl
Failed to get D-Bus connection: Operation not permitted
但如无必要尽量不要使用--privileged 否则有可能会导致容器中 agetty进程的CPU使用 100%.
(可以用docker stats 观察, Kill agetty进程就暂时正常;这bug,不知道什么时候能修复)
参数说明:
-e TZ="Asia/Shanghai" 时区一定要指定, 不然差8小时
-h cent76_21 主机名
--privileged 容器内为获得root权限
-itd 后台运行
--name cent7621 容器名
-m 指定内器最大使用内存
--network 使用网络
--ip 指定静态ip
init 结尾要用init
3. 安装常用工具(视需要)及SSH
- 安装常用工具
docker exec -it cent762 sh
yum install -y openssh openssh-server openssh-clients vim lrzsz wget gcc-c++ pcre pcre-devel zlib zlib-devel ruby openssl openssl-devel patch bash-completion zlib.i686 libstdc++.i686 lsof unzip zip tmux iproute net-tools rsyslog ntpdate crontabs sudo telnet
--启动crontab
systemctl start crond
--启动syslog服务
rsyslogd
logger "Hello World"
查看/var/log/messages是否有记录Hello World ,如果没有可按如下设置
解决办法如下:
修改syslog配置—— # vi /etc/rsyslog.conf
- 注释掉 $ModLoad imjournal
- 设置 $OmitLocalLogging 为 off
- 注释掉 $IMJournalStateFile imjournal.state
- 设置口令
echo root:welcome1 | chpasswd
- 可根据需要(如改22端口) 修改配置文件 /etc/ssh/sshd_config ,
#UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no
#sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
#/usr/sbin/sshd-keygen -A
--重启ssh
systemctl restart sshd
--连接测试
ssh root@2.2.2.21 date