关于Docker
1.什么是Docker
在使用之前,需要知道Docker是基于Google公司的Go语言实现,后来加入Linux基金会,遵从Apache 2.0协议。
Docker的目标是实现轻量级的操作系统虚拟化解决方案。而与传统虚拟化不同的是,Docker基于Linux容器技术,却在linux基础上做了封装,用户不需要关心容器管理,直接使用就像是在使用一个最基础版本的虚拟机一样。
借用下网上传统虚拟机与Docker的对比图片。
传统虚拟化应用程序中,不仅包含应用程序和必要的二进制文件库,还包含一个完整的操作系统。
而Docker容器仅包含应用程序和相关依赖项,在主机的操作系统用户空间中作为一个独立进程运行,与其他容器共享内核,从而实现了虚拟机的资源隔离和分配,具有更高的可移植性和效率提高。
2.为什么使用Docker
1.更快速的交付和部署
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接 使用这个容器来部署代码。
2.高效部署和扩容
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。
3.更高的资源利用率
Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
4.更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
3.Docker的工作原理和概念
自己制作镜像然后上传仓库或使用仓库已有的镜像文件拉取到容器中部署。
Docker安装
为了方便Docker的说明,本次例子使用虚拟机安装CentOS 7来演示。CentOS 7的安装请等查看下篇文章或自行百度。
1.安装之前的准备工作
systemctl stop firewalld (关闭防火墙)
systemctl disable firewalld (禁止防火墙开机启动)
getenforce (禁止SELINUX启动,解决权限修改不了等问题)
cat /etc/selinux/config
将SELINUX=disabled
按照顺序,执行如下操作
1、安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
安装准备工作
2.开启Docker服务
systemctl start docker (启动docker)
systemctl enable docker (加入开机启动)
运行docker version 如果出现以下情况,说明当前用户没有 root相关操作权限
无root权限
解决思路
sudo groupadd docker #添加docker用户组
常用以下三个
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用
先查看有多少镜像
docker images
运行docker run hello-world 测试命令,如果出现下方红框内消息,证明安装成功
3.查看docker基本信息和版本
docker info
构建基础镜像
1.构建Nginx基础镜像
docker search nginx
查询nginx镜像
docker pull nginx
镜像拉取
在当前窗口运行docker
docker run -it nginx
或在后台执行docker
docker run -d nginx
运行docker ps查看进程
查看元数据信息
docker inspect a8664cfc7fb1
查看对外的访问路径
curl 172.17.0.2
怎么才能访问刚才启用的nginx
nginx页面内容
我们可以进入容器,看下这个容器是什么样子
docker exec -it a8 bash (默认在/usr/local/ 下面)
查看nginx在哪个位置
which nginx
/usr/sbin/nginx
我们发现尽管启动了nginx,但是在外部还是不能访问,这是因为docker具有隔离机制,要不然怎么叫做容器化部署呢
Docker内nginx端口
对Nginx进行外网端口映射;
docker run -d -p 8080:80 nginx
2.构建Tomcat基础镜像
docker search tomcat
docker pull tomcat
打开容器后,默认安装目录在 /usr/local/
3.创建自己的专属镜像
用Dockerfile来制作镜像
例如:下载tomcat的镜像(下面这个地址的镜像,连JDK都包含了)
docker pull hub.c.163.com/library/tomcat:latest
编辑 vi Dockerfile
from hub.c.163.com/library/tomcat
MAINTAINER ningdonghai 56936000@qq.com
COPY nywlw /usr/local/tomcat/webapps
创建一个新的镜像,并起名字为nywlw
docker build -t nywlw:latest .
查看新的镜像
运行自己创建的容器
docker run -d -p 8081:8080 nywlw
4.删除容器实例
1.docker ps -a 寻找已经停止(注意是已停止的)运行的实例
2.docker rm 59ec 删除实例
3.docker ps -a 查看实例已经删除
5.删除镜像
docker rmi -f 容器ID或容器名
最后
每天发布更多新鲜有含量的技术文章、总有一款适合你。
快关注我、把我打包带走、每天提醒你学习一手技术。