写点什么

运维进阶训练营 -W01H

作者:赤色闪电
  • 2022-10-23
    北京
  • 本文字数:3716 字

    阅读完需:约 12 分钟

梳理各 Namespace 的作用。

  • MNTNamespace(mount):提供磁盘挂载点和文件系统的隔离能力。

  • IPCNamespace(Inter-ProcessCommunication):提供进程间通信的隔离能力。

  • UTSNamespace(UNIXTimesharingSystem):提供主机名隔离能力。

  • PIDNamespace(ProcessIdentification):提供进程隔离能力。

  • NetNamespace(network):提供网络隔离能力。

  • UserNamespace(user):提供用户隔离能力。

  • TimeNamespace:提供时间隔离能力。

  • SyslogNamespace:提供 syslog 隔离能力。

  • Controlgroup(cgroup):Namespace 提供进程所属的控制组的身份隔离。

使用 apt/yum/ 二进制安装指定版本的 Docker 。

1、rpm 安装

以 CentOS 系统为例,通过下述命令在可上网机器上保存 rpm 包

yum install docker-ce --downloaddir=/data --downloadonly
复制代码

将 rpm 包拷贝到内网机器上,进入相关目录后使用下述命令安装

yum localinstall *.rpm
复制代码

2、apt 安装

# Ubuntu 14.04/16.04(使用 apt-get 进行安装)# step 1: 安装必要的一些系统工具sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common# step 2: 安装GPG证书curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# Step 3: 写入软件源信息sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"# Step 4: 更新并安装Docker-CEsudo apt-get -y updatesudo apt-get -y install docker-ce
# 安装指定版本的Docker-CE:# Step 1: 查找Docker-CE的版本:# apt-cache madison docker-ce# docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages# docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)# sudo apt-get -y install docker-ce=[VERSION]
复制代码

3、yum 安装

# CentOS 7(使用 yum 进行安装)# step 1: 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# Step 2: 添加软件源信息sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo# Step 4: 更新并安装Docker-CEsudo yum makecache fastsudo yum -y install docker-ce# Step 4: 开启Docker服务sudo service docker start
# 注意:# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。# vim /etc/yum.repos.d/docker-ce.repo# 将[docker-ce-test]下方的enabled=0修改为enabled=1## 安装指定版本的Docker-CE:# Step 1: 查找Docker-CE的版本:# yum list docker-ce.x86_64 --showduplicates | sort -r# Loading mirror speeds from cached hostfile# Loaded plugins: branch, fastestmirror, langpacks# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable# Available Packages# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)# sudo yum -y install docker-ce-[VERSION]
复制代码

4、二进制安装

# docker二进制文件下载地址:download.docker.com/linux/static/stable# 使用安装脚本安装docker二进制文件bash docker-install.sh
复制代码

安装脚本 docker-install.sh

#!/bin/bashDIR=`pwd`PACKAGE_NAME="docker-20.10.19.tgz"DOCKER_FILE=${DIR}/${PACKAGE_NAME}#read -p "请输入使用docker server的普通用户名称,默认为docker:" USERNAMEif test -z ${USERNAME};then  USERNAME=dockerficentos_install_docker(){  grep "Kernel" /etc/issue &> /dev/null  if [ $? -eq 0 ];then    /bin/echo  "当前系统是`cat /etc/redhat-release`,即将开始系统初始化、配置docker-compose与安装docker" && sleep 1    systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已关闭" && sleep 1    systemctl stop NetworkManager && systemctl disable NetworkManager && echo "NetworkManager" && sleep 1    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux && setenforce  0 && echo "selinux 已关闭" && sleep 1    \cp ${DIR}/limits.conf /etc/security/limits.conf     \cp ${DIR}/sysctl.conf /etc/sysctl.conf    /bin/tar xvf ${DOCKER_FILE}    \cp docker/*  /usr/bin    mkdir /etc/docker && \cp daemon.json /etc/docker
\cp containerd.service /lib/systemd/system/containerd.service \cp docker.service /lib/systemd/system/docker.service \cp docker.socket /lib/systemd/system/docker.socket
\cp ${DIR}/docker-compose-Linux-x86_64_1.28.6 /usr/bin/docker-compose groupadd docker && useradd docker -s /sbin/nologin -g docker id -u ${USERNAME} &> /dev/null if [ $? -ne 0 ];then useradd ${USERNAME} usermod ${USERNAME} -G docker else usermod ${USERNAME} -G docker fi install_success_info fi}
ubuntu_install_docker(){ grep "Ubuntu" /etc/issue &> /dev/null if [ $? -eq 0 ];then /bin/echo "当前系统是`cat /etc/issue`,即将开始系统初始化、配置docker-compose与安装docker" && sleep 1 \cp ${DIR}/limits.conf /etc/security/limits.conf \cp ${DIR}/sysctl.conf /etc/sysctl.conf /bin/tar xvf ${DOCKER_FILE} \cp docker/* /usr/bin mkdir /etc/docker && \cp daemon.json /etc/docker
\cp containerd.service /lib/systemd/system/containerd.service \cp docker.service /lib/systemd/system/docker.service \cp docker.socket /lib/systemd/system/docker.socket
\cp ${DIR}/docker-compose-Linux-x86_64_1.28.6 /usr/bin/docker-compose
groupadd docker && useradd docker -r -m -s /sbin/nologin -g docker id -u ${USERNAME} &> /dev/null if [ $? -ne 0 ];then groupadd -r ${USERNAME} useradd -r -m -s /bin/bash -g ${USERNAME} ${USERNAME} usermod ${USERNAME} -G docker else usermod ${USERNAME} -G docker fi install_success_info fi}

install_success_info(){ /bin/echo "正在启动docker server并设置为开机自启动!" systemctl enable containerd.service && systemctl restart containerd.service systemctl enable docker.service && systemctl restart docker.service systemctl enable docker.socket && systemctl restart docker.socket sleep 0.5 && /bin/echo "docker server安装完成,欢迎进入docker世界!" && sleep 1}
main(){ centos_install_docker ubuntu_install_docker}
main
复制代码

熟练使用 Docker 数据卷。


# dcoker创建数据卷并挂载docker volume create nginx-datadocker run -it -d -p 80:80 -v nginx-data:/data nginx:1.20.2 
# 数据目录挂载docker run -it -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -v
# 数据目录及配置多卷挂载docker run -d --name web3 -v /data/testapp:/usr/share/nginx/html/testapp -v Idata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 83:80 nginx:1.20.2
# 数据卷容器# 卷容器Serverdocker run -d --name volume-server -v /data/testapp:/usr/share/nginx/html/testapp -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro registry.cn-hangzhou.aliyuncs.com/zhangshijie/pause:3.8# client1 docker run -d --name web1 --volumes-from volume-server -p80:80 nginx:1.20.2# client2docker run -d --name web2 --volumes-from volume-server -p81:80 nginx:1.20.2
复制代码

熟练使用 Docker 的 bridge 和 container 模式网络。

# Docker网络-bridge模式dlocker run -it -d --name nginx-web1-bridge-test-container -p 80:80 --net=bridge nginx:1.20.2
# Docker网络-container模式docker run -it -d --name nginx-container -p 80:80 --net=bridge nginx:1.22.0-alpinedocker run -it -d --name php-container --net=container:nginx-container php:7.4.30-fpm-alpine
复制代码


发布于: 刚刚阅读数: 4
用户头像

赤色闪电

关注

还未添加个人签名 2018-05-30 加入

还未添加个人简介

评论

发布
暂无评论
运维进阶训练营-W01H_运维_赤色闪电_InfoQ写作社区