• Docker部署centos7容器


    操作系统:centos7.2.1511
    centos镜像:centos7.2.1511

    安装docker

    yum -y install docker

    启动docker

    systemctl start docker

    发现启动不了,报错:

    Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux ...enabled=false)

    修改配置文件

    vim /etc/sysconfig/docker
    OPTIONS='--selinux-enabled=false'

    再次启动服务

    systemctl start docker
    systemctl status docker 
    ● docker.service - Docker Application Container Engine
       Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
       Active: active (running) since Tue 2018-07-17 05:48:54 CST; 20s ago
         Docs: http://docs.docker.com

    下载centos7.2镜像

    docker pull daocloud.io/library/centos:centos7.2.1511
    docker images
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    daocloud.io/library/centos   centos7.2.1511      0a2bad7da9b5        8 months ago        195 MB

    Systemd整合

    因为 systemd 要求 CAPSYSADMIN 权限,从而得到了读取主机 cgroup 的能力,CentOS7 中已经用 fakesystemd 代替了 systemd 来解决依赖问题,如果仍然希望使用 systemd,可用下面的 Dockerfile

    cat > Dockerfile <<EOF
    FROM 0a2bad7da9b5
    MAINTAINER Testder 10000@testder.cn
    ENV container docker
    RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs
    RUN yum -y update; yum clean all; 
    (cd /lib/systemd/system/sysinit.target.wants/; for i in *;
    do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); 
    rm -f /lib/systemd/system/multi-user.target.wants/*;
    rm -f /etc/systemd/system/*.wants/*;
    rm -f /lib/systemd/system/local-fs.target.wants/*; 
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; 
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; 
    rm -f /lib/systemd/system/basic.target.wants/*;
    rm -f /lib/systemd/system/anaconda.target.wants/*;
    VOLUME [ "/sys/fs/cgroup" ]
    CMD ["/usr/sbin/init"]
    EOF

    构建基础镜像

    docker build --rm -t centos7.2 .

    后台运行Centos容器

    为了运行一个包含 systemd 的容器,您需要使用–privileged选项, 并且挂载主机的 cgroups 文件夹。 下面是运行包含 systemd 容器的示例命令:

    docker run -itd --name centos7.2 --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro centos7.2
    641f23dce23355729dfb8e99e5df467574eb116afbb1c50e71e272e952451d03

    使用exec进入Centos容器,systemd启动成功

    docker exec -it centos7.2 /bin/bash
    [root@641f23dce233 /]# yum -y install httpd
    [root@641f23dce233 /]# systemctl start httpd
  • 相关阅读:
    [LeetCode]10. Regular Expression Matching
    [LeetCode]9. Palindrome Number
    [LeetCode]8. String to Integer (atoi)
    javascript 内部函数的定义及调用
    canvas和白鹭引擎中平移,旋转,缩放
    改变this指向的call,apply,bind方法
    关于JavaScript中this小有理解
    关于位运算符的计算法方法
    制作简单的GIF动图
    HTML中的单位小结
  • 原文地址:https://www.cnblogs.com/testder/p/9397954.html
Copyright © 2020-2023  润新知