文章目录
一.Docker概述
1.Docker是什么?特点
是一种轻量级的“虚拟机”
在Linux容器里运行应用的开源工具
特点:
服务彼此间相互独立,服务间的解耦。解耦:便于管理,防止数据过多积累在一个文件中(DNS三个配置文件)
服务可以灵活迁移,docker引擎,docker-ce(编译apache时,文件apr,apr-util可以在各种系统中使用)
2.Docker与虚拟机的区别
| 虚拟机 | 容器 | |
|---|---|---|
| 启动 | 1-3分钟 | 毫秒 |
| 容量 | 占用大 | 占用小 |
| 安全 | 安全(系统隔离) | 不安全(内核共享) |
| 弹性扩展 | 执行时间长 | 执行时间短 |


3.Docker核心概念
镜像:一个面向Docker容器引擎的只读模板
容器:从镜像创建的运行实例
仓库:集中保存镜像的地方
4.Docker的使用场景
打包应用程序简化部署
可脱离底层硬件任意迁移
例:服务器从腾讯云迁移到阿里云
二.安装Docker
1.安装依赖包
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.设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker-ce
#安装社区版
yum install -y docker-ce
#关闭防火墙,关闭核心防护
systemctl stop firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
#开启docker,设置开机自启
systemctl start docker
systemctl enable docker
4.镜像加速
cd /etc/docker/
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://13iz****.mirror.aliyuncs.com"] 镜像加速需要自己找
}
EOF
//镜像加速需要去阿里云上查找
systemctl daemon-reload
systemctl restart docker
5.网络优化
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
systemctl restart docker
systemctl restart network
6.转发原因
可以观察以下拓扑图,可以知道需要设置数据转发的原因
可以发现每个容器与docker 0 组成一个局域网,网段为172.17.0网段,与物理网卡ens33不在同一个网络里,所以需要做数据转发的网络优化

三.Docker的基本操作
1.镜像的命令操作
docker version //查看docker版本信息
docker search nginx //搜索nginx镜像(共有仓库)
docker pull nginx //下载nginx镜像
下载后存放在/var/lib/docker
/var/lib/docker/image/overlay/repositories.json //下载文件信息
查看镜像列表
docker images //查看下载镜像信息
[root@localhost opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 8 hours ago 133MB
docker inspect bc9a0695f571 //获取镜像信息
docker tag nginx:latest nginx:web //添加新标签,会多出一个镜像
//删除
docker rmi nginx:web
注意:如果有别名的镜像,直接删ID是无法删除的,但是只有一个的时候是可以删掉的
docker rmi bc9a0695f571 //删除ID 方式删除镜像
docker images | grep nginx //查看
[root@localhost opt]# docker save -o /opt/nginx nginx:latest
[root@localhost opt]# ll
总用量 133884
-rw-------. 1 root root 137096704 11月 25 16:30 nginx
[root@localhost opt]# docker load < /opt/nginx //载入镜像
2.上传镜像(需要在docker官网里拥有账号,在官网里创建仓库)
//改标签
docker tag nginx:latest abner/nginx:web // 用户名/仓库名:镜像
//登录
docker login
Username: docker
password:
Email: xxx@xxx.com
//上传
docker push abner/nginx:web
注意:这种方式用得少
3.容器的命令的操作
//容器创建
docker create [选项] 镜像运行的程序
-i:让容器的标准输入保持打开
-t:让Dockers分配一个伪终端
例如
[root@localhost opt]# docker create -it nginx:latest /bin/bash
568ffde0d65f5d97f14b8d65c59d4711b919e8a04a9acc7f6e9c27e0bf8f1fe3
//查看容器运行状态
docker ps [选项]
-a 列出所有的容器,包括未运行的容器
docker ps -a //列出所有的容器
docker ps //只列出在运行的容器
//启动执行命令查看系统根目录
[root@localhost opt]# docker pull centos:7
[root@localhost opt]# docker create -it centos:7 /bin/bash
[root@localhost opt]# docker ps -a
[root@localhost opt]# docker start 5ba0448515d0
[root@localhost opt]# docker run centos:7 /usr/bin/bash -c ls /
//持续在后台执行
docker run paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done"
docker stop 5ba0448515d0
docker exec -it 5ba0448515d0 /bin/bash
Error response from daemon: Container 5ba0448515d0e534a823bcb5ebb86009f42738653a2a2d54f203cbc6f8abee98 is not running
//容器进入
docker start 5ba0448515d0 (一定是运行状态)
docker exec -it 5ba0448515d0 /bin/bash
exit //退出容器
//终止运行
[root@localhost opt]# docker stop 5ba0448515d0
5ba0448515d0
//容器导出
[root@localhost opt]# docker export 5ba0448515d0 > /opt/nginx_e
//容器导入(会生成镜像,而不会创建容器)
[root@localhost opt]# cat /opt/nginx_e | docker import - nginx_e
//删除容器
[root@localhost opt]# docker rm 568ffde0d65f
568ffde0d65f
//删除批量容器
docker ps -a | awk '{print "docker rm "$1}' | bash
常规步骤
运行容器的三个步骤:
1.下载镜像
2.利用镜像创建容器
3.开启容器
docker ps -a
正常退出时,返回的状态码为0
异常退出时,返回的状态码为非0值
docker stop a029cbf81e0c 为异常退出
容器执行完命令后,不会一直开启等待,会释放掉容器
容器的三种状态:
exited:被关闭 或者执行完命令后被释放掉
up : 容器在开启执行
created:容器只被创建了
本文介绍了Docker,它是轻量级“虚拟机”,具有服务解耦、灵活迁移等特点,还阐述了与虚拟机区别、核心概念及使用场景。详细说明了安装步骤,包括依赖包安装、镜像源设置等,最后讲解了镜像和容器的命令操作及镜像上传方法。
406

被折叠的 条评论
为什么被折叠?



