Docker笔记 —— 简介与安装 + Centos的一些配置

项目部署的历史演化

  1. 物理机时代

    部署很慢,成本高,资源浪费,难以扩展和迁移,受限于硬件

  2. 虚拟机时代

    一台物理机上可以创建多台虚拟机,虚拟机之间是彼此隔离,物理机的资源可以池化管理

    特点:

    1. 多部署
    2. 物理机资源通过池化来管理
    3. 不同虚拟机之间使用的资源相互隔离
    4. 容易扩展
    5. 但是,需要安装操作系统,比较笨重
  3. 容器化时代

    可以简单理解为不需要安装操作系统的虚拟化技术

    在这里插入图片描述

容器化技术的应用场景

  1. 标准化迁移方式
  2. 统一的参数配置
  3. 自动化部署
  4. 应用集群监控
  5. 开发与运维之间沟通方便

阿里云/腾讯云的容器化应用:采用的是虚拟机+Docker容器混合方式。

在这里插入图片描述

Docke简介与安装

简介

  1. Docker是基于Go的完全开源的应用容器引擎
  2. 完全使用沙箱机制,创建或销毁一个容器的开销极低
  3. 容器化技术不止Docker一个产品,但Docker是容器化技术的代名词
  4. Docker也具备一定的虚拟化职能,除了可以创建容器,还能向本地物理机申请资源

功能

  1. 提供了标准化的应用打包
  2. 这个应用需要多少硬件资源,比如需要多少CPU,需要多少内存,这些信息都是在Docker中描述的

版本

  1. Docker在2016年拆分为了社区版(CE)和企业版(EE)

安装Docker

基于CentOS7

# 第1个yum-utils组件,是yum安装工具包,可以简化安装源的配置过程
# 后2个组件,是docker做数据存储需要的驱动包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 下面这个命令是上面yum-utils包提供的简化工具
# 用于修改yum的安装源
# 因为默认docker的源是在国外,很慢。所以将其修改为阿里云的安装源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 下面的命令,让yum自动检测,哪个安装源是最快的,并优先使用它
yum makecache fast

# 准备工作完毕,下面开始安装docker
yum -y install docker-ce

# 如果先前安装过docker,可以先根据下面步骤进行删除
yum list installed | grep docker
# 然后把列出来的yum包挨个用下面命令进行删除
sudo yum -y remove ****
# 最后,删除/var/lib/docker/,这个目录存放着docker的文件
rm -rf /var/lib/docker

启动Docker服务

# 启动docker服务
service docker start
# 或者
systemctl docker start
# 进行验证,查看docker版本号
docker version
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.9
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        9d988398e7
 Built:             Fri May 15 00:25:27 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.9
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       9d988398e7
  Built:            Fri May 15 00:24:05 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

可以看到有Docker Client和Docker Server,因为Docker是个CS架构。Docker命令是由Docker Client提供的,默认Docker Client连接的是本地的Docker Server

运行Docker容器

# 拉取hello-world镜像
docker pull hello-world
# 拉取完成后,创建并运行容器
docker run hello-world
[root@localhost ~]# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

配置使用阿里云加速服务

# 浏览器打开 aliyun.com
# 搜索 “容器镜像服务”
# 登录(使用支付宝扫码登录)
# 为自己的镜像服务创建密码,我的密码是*****
# 找到最左侧的镜像加速器
# 根据文档中的说明进行配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    
    
  "registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

# /etc/docker/daemon.json 是docker的默认配置文件
# docker在启动时会自动加载这个文件
# 如此,docker在下载镜像时,会优先使用上面的地址进行镜像拉取

其他一些关于centos的配置

将docker添加为开机自启动

# 配置 centos 7 的服务
systemctl start docker # 启动docker服务
systemctl enable docker # 将docker服务设为开机自启动
systemctl list-unit-files # 查看所有服务 

配置阿里的yum源

# centos 7配置阿里的yum源和epel源
#配置阿里云yum源
yum install -y wget
cd  /etc/yum.repos.d/
mv  CentOS-Base.repo CentOS-Base.repo.bak
wget  http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo CentOS-Base.repo
#配置epel源
wget https://mirrors.aliyun.com/repo/epel-7.repo
#清除缓存并更新
yum clean all
yum makecache
yum update

修改防火墙设置,对外暴露接口

# 关于centos 7的防火墙,在docker运行时,需要做端口映射,并将centos服务器的端口对外暴露
systemctl stop firewalld # 关闭防火墙
systemctl start firewalld #开启
systemctl enable firewalld # 开机启动
systemctl disable firewalld # 取消开机启动
firewall-cmd --help # 查看帮助
firewall-cmd --state  # 查看防火墙状态
firewall-cmd --list-port # 查看已放行的端口
# 永久放行8000/tcp端口,放行完后需要reload一下
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --reload # 更新规则,不重启服务
firewall-cmd --complete-reload # 更新规则,重启服务

firewall-cmd --remove-port=8000/tcp --permanent
firewall-cmd --query-port=8000/tcp

关于ll命令找不到的情况

# 关于ll命令找不到的情况
# ll不是linux原生命令,而是ls -l的别名
# 通过修改~/.bashrc文件,可以指定命令的别名
vi ~/.bashrc
# 打开.bashrc后,添加如下文本
alias ll = 'ls -l'
# 然后刷新一下.bashrc 即可
source ~/.bashrc

关于配置powerline-status插件

# 安装powerline-status
sudo yum install epel-release
sudo yum install python-pip
pip install powerline-status
# 查看powerline安装位置
pip show powerline-status
# 配置 ~/.bashrc文件,添加如下内容
if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh
fi

# 刷新~/.bashrc,使其生效
source ~/.bashrc

# 如何让vi实现代码高亮
# 先安装vim增强包
yum -y install vim-enhanced
# 设置vi和vim的别名
vi ~/.bashrc
# 或者
vi /etc/profile
# 打开文件后,添加命令别名
alias vi=vim
# 然后刷新一下
source ~/.bashrc
# 或者
source /etc/profile
# 然后用vi打开文件,即可看到代码高亮
# 默认是开启了代码高亮
# 也可以在vi环境下,使用
:syntax off # 来关闭代码高亮
:syntax on # 开启代码高亮

猜你喜欢

转载自blog.csdn.net/vcj1009784814/article/details/106270032