Docker基本原理及部署操作
一、Docker概述
1.Docker是什么?
- 是一种轻量级的"虚拟机"
- 在Linux容器里运行应用的开源工具
Docker与虚拟机的区别
2.Docker的使用场景
- 打包应用程序简化部署
- 可脱离底层硬件任意迁移
- 例:服务器从腾讯云迁移到阿里云
3.Docker的特点
- 服务彼此间相互独立 (服务间的解耦)
- 服务可以灵活迁移 (docker引擎 docker-ce)
4.Docker核心概念
镜像
- 一个面向Docker容器引擎的只读模板
容器
- 从镜像创建的运行实例
仓库
- 集中保存镜像的地方
4.CentOS安装Docker的两种方式
- 使用CURL获得Docker的安装脚本进行安装
- 使用YUM仓库来安装Docker
以下演示第二种方法YUM仓库来安装Docker
二、YUM仓库部署19版Docker
1.安装依赖包
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
#yum-utils 提供了 yum-config-manager
#device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
#Device Mapper 是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
2.设置阿里云镜像源
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装 Docker-CE,关闭防火墙设置开机自启动
[root@localhost ~]# yum -y install docker-ce
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled
[root@localhost ~]# systemctl start docker.service
[root@localhost ~]# systemctl enable docker.service
4.开启镜像加速(首先得注册阿里云账号)
登录阿里云首页 https://www.aliyun.com
搜索镜像加速
选择第一个官方镜像加速
在网页最下方选择容器镜像服务 ACR
点击管理控制台
然后选择镜像加速器,复制选中的字体(每个人的都不一样)
[root@localhost ~]# cd /etc/docker/
[root@localhost docker]# ls
key.json
[root@localhost docker]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://yfseh35c.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://yfseh35c.mirror.aliyuncs.com"]
}
[root@localhost docker]# ls
daemon.json key.json
[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker
5.网络优化
[root@localhost docker]# vim /etc/sysctl.conf
添加net.ipv4.ip_forward=1
[root@localhost docker]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost docker]# systemctl restart network
[root@localhost docker]# systemctl restart docker.service
6.查看docker版本
[root@localhost docker]# docker version
Client: Docker Engine - Community
Version: 19.03.13
API version: 1.40
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:03:45 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.13
API version: 1.40 (minimum version 1.12)
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:02:21 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.7
GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
==环境部署完毕==
三、Docker镜像操作
docker search 关键字 // 搜索镜像
docker images //查看本地镜像
docker pull nginx // 下载nginx镜像
docker rmi 名称/id //删除指定镜像
docker inspect 名称/id //查看镜像具体信息
docker tag nginx:latest nginx:web //贴标签(共用同一个ID)
docker save -o /opt/nginx nginx:web //以文件形式保存镜像
docker load < /opt/nginx //载入镜像
四、Docker容器操作
docker create -it nginx:web /bin/bash // 创建容器
docker ps // 查看已启动容器
docker ps -a // 查看所有容器
docker start 容器ID //启动容器
docker run -itd centos:7 /bin/bash //创建并启动容器
docker exec -it 容器ID /bin/bash // 进入容器
docker run nginx:web /bin/bash -c ls / //容器操作一次性命令(不会持续占用资源)
docker stop 容器ID //容器停止运行
docker rm 容器ID //删除容器
docker export 容器ID > /opt/nginx_c //容器导出
cat nginx_c | docker import - nginx:web //容器导入(会生成镜像,而不会创建容器)
docker ps - a | awk ‘{print "docker rm "$1}' | bash //批量删除容器(只能删除退出状态的容器)