运维进阶训练营 -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
版权声明: 本文为 InfoQ 作者【赤色闪电】的原创文章。
原文链接:【http://xie.infoq.cn/article/7f2b002fa259f5e94c1b63f6b】。未经作者许可,禁止转载。
赤色闪电
关注
还未添加个人签名 2018-05-30 加入
还未添加个人简介










评论