Docker容器- 从装机起,一步一步解决问题
观前预知:本人用做记笔记用而非发布技术博客,可能存在诸多谬误||最多只能为各位做参考,欢迎讨论
环境准备
使用资源
- 虚拟机:VMware® Workstation 16 Pro,版本16.1.2 build-17966106
- 终端:MobaXterm
- Linux类型及版本镜像:CentOS-7-x86_64-DVD-1804.iso
相关安装链接参考
虚拟机安装链接参考
centos官网下载地址,尽量选择国内镜像,参考部分失效。
Docker国内镜像清华
docker-compose/
相关概念
容器定义
(解释来源于相关文档)
- 用于存储物品
- 现在使用的是虚拟机,可以通过虚拟机部署同类型的应用;通过虚拟机隔离应用运行的环境,主流:VMware、VirtualBox
- 虚拟机优点:隔离环境
- 虚拟机缺点:需要单独安装操作系统;虚拟机磁盘占用物理机磁盘空间;启动过程浪费时间
马上要使用的容器:不需要安装操作系统;能够像虚拟机一样可以提供应用运行的隔离环境;启动过程时间较短。
疑问:在此解释中,容器定义的作用貌似和虚拟机有相同部分,为什么还要单独设出容器这一概念?
/>参考部分链接:容器虚拟机区别, docker容器与虚拟机有什么区别?, 浅析Docker容器的应用场景个人理解:
两者主要区别在于所针对的应用场景不同而采取了不尽相同的构建思想和构建方式。
容器像是在某个环境中做一个并不彻底的分离,并不会占用所有资源,而且所分离出的环境有一套与环境无关的标准,故能与其它容器联系作用。这使得可以通过各个容器内不同的服务模块搭建的可以完整的搭建一套架构,其本身轻量化的特点可以很方便的用作临时搭建一次性任务并与之销毁。主要可以用于应用于应用之间的联合部署。
而虚拟机更像是对某个环境的整体几乎彻底的分割,相当于将某个环境的某块区域单独进行“重置”,其“重置”的区域环境自然也需要重新部署(硬件)。相较于容器,虚拟机或许可以承担更加复杂的实验,以及有着更高的安全性,可以用作用户于用户之间的分割。但虚拟机也并非绝对安全,如“虚拟机逃逸”问题。
容器管理工具部署-Docker
下载Docker镜像(获取yum源)
如果Linux为默认最小化安装或安装未设置,则无法使用wegt命令进行远程安装,此时安装wegt命令
yum install -y wget
再从远程下载(此处下载链接为清华大学开源软件镜像站)
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
验证查看
ls /etc/yum.repos.d/
安装docker-ce
yum -y install docker-ce
docker-io 是以前早期的版本,版本号是 1.*
新版本分为社区版 docker-ce 和企业版 docker-ee,版本号是 17.*
启动docker
写入Docker服务的开机自启动命令
systemctl enable docker
启动Docker
systemctl start docker
查看Docker版本信息
docker version
容器管理工具生态
运行容器的条件
- docker daemon ——Docker的守护进程
- docker client ——Docker是一个client/server的架构,通过二进制文件docker创建Docker客户端将请求类型与参数发送给Docker Server,Docker Server具体执行命令调用。
- 容器镜像
- 容器镜像仓库 链接
下载容器镜像
镜像分类
1.系统类容器镜像 CentOS
2.应用类容器镜像 Apache
基础系统类容器镜像,包含文件系统,不包含操作系统。
下载一个系统类容器镜像
搜索DockerHub是否有centos容器镜像
docker search centos
下载centos容器镜像
docker pull centos
验证centos容器镜像是否下载
docker images
运行一个容器
运行
docker run -it --name=c1 centos:latest /bin/bash
查看
测试运行的容器是否联网
ping -c [数字] [地址] 其中-c是ping的次数
ping -c 4 www.baidu.com
退出
exit
使用容器部署wordpress
准备部署wordpress需要的镜像文件
拉取 wordpress 镜像
docker pull wordpress:latest
部署mysql 5.7
docker pull mysql:5.7
查看本地镜像
docker images
准备docker-compose工具
准备epel YUM源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
查看本地源
ls /etc/yum.repos.d/
准备pip工具,用于批量管理python语言开发的工具包(和GitHub二进制的区别主要在于版本)
yum -y install python2-pip
一次性安装下列服务以解决相关的软件依赖关系
yum -y install gcc libffi-devel python-devel openssl-devel openldap-devel
更新pip版本
pip install --upgrade pip
用pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas安装时出错
最后查询得以解决,疑似是各个软件包版本不符的原因
docker-compose命令不存在、未找到命令解决方式
docker-compose升级
准备部署文件
刚刚安装完的镜像
YAML文件介绍
YAML 也是一种标记语言, YAML帮助网址
wordpress部署文件准备
工程目录创建并切入
mkdir wordpressproject
cd wordpressproject/
编写docker-compose.yaml文件:
启动工程
编辑
vi /etc/sysctl.conf
如图插入:net.ipv4.ip_forward = 1
使其立即生效
sysctl -p
启动docker-compse:
在浏览器中输入自己的IP加端口号8000,并向下拖动选择中文
进入下一步更改,基本信息填完后选择 安装WordPress
完成
填入刚刚注册的账号密码即可完成。
停止并删除刚刚创建的容器
docker-compose down
其它
一个动态IP的问题
我用虚拟机新建了一个contens7的系统,但是它的IP将我之前的一个虚拟机的IP(.129)顶掉了,原来虚拟机IP变为(.132),经查证可能是设置的动态IP的问题。
IP网卡配置 参考地址