docker介绍
docker是一种linux容器技术。容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求。可简单理解为一种沙盒
。每个容器内运行一个应用,不同的容器之间相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,资源需求远远低于虚拟机。 好处
能高效地构建应用。 对于运维开发来说,
能快速的交付和部署 高效的资源利用 轻松的迁移扩展
“虚拟机是在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。Docker是开源的应用容器引擎,依然需要先在电脑上安装操作系统,然后安装Docker容器的管理器,才可以。虚拟机是在硬件级别进行虚拟化,而Docker是在操作系统的层面虚拟化;虚拟机是通过模拟硬件搭建操作系统”
与虚拟机的比较
docker与虚拟化
docker与虚拟化
镜像(Image) 容器(Container) 仓库(Repository) 镜像:类似虚拟机镜像
容器:容器是镜像的一个运行实例,不同的是它带有额外的可写层。容器从镜像启动的时候,docker会在镜像的最上一层创建一个可写层,镜像本身是只读的,保持不变。
仓库:仓库是集中存放镜像的地方。每个服务器上可以有多个仓库。 仓库又分为公有仓库(DockerHub、 dockerpool)和私有仓库
![在这里插入图片描述](https://img-/083928394.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbnlvbmdtaW5n,size_16,color_FFFFFF,t_70
容器、仓库、镜像运行关系图:
docker安装
一 环境准备
1、虚拟机or物理机
2、centos7系统(稳定,对docker支持友好)
二 安装过程
step1:使用yum命令进行安装
yum install -y docker
备注:-y 表示不询问 使用默认配置进行安装,等待提示 完毕!
step2:查看是否安装成功
yum list installed | grep docker
备注:命令为 查看yum安装完成文件列表 并 筛选docker安装信息 如下
step3:启动docker服务
systemctl start docker
step4:查看是否启动成功
systemctl status docker
操作时如有问题可关注公众号回复docker联系作者
如果没有出现 active(running)说明启动失败
解决方法,修改docker文件,具体命令:vi /etc/sysconfig/docker,在–selinux-enabled后面添加=false。如下图所示:
再次执行
systemctl start dockersystemctl status docker
Step5:查出docker版本
docker version
Step6:测试
docker run hello-world
三 配置镜像加速
A.打开阿里云网址https://cr.
B.使用支付宝或淘宝账号登录
C.搜索容器镜像服务
D.复制红色区域内容
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://替换你的地址."]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker
四 docker命令
① docker images -q 只显示镜像id
② docker image -a 列出本地所有镜像(含中间映像层)
③docker images --digests 显示镜像的摘要信息
④docker images --no-trunc 显示镜像完整信息
⑤docker search 镜像名 搜索镜像
⑥docker pull 镜像名 下载镜像
⑦docker rmi 镜像id 删除镜像
⑧ docker ps 列出正在运行 的 容器
⑨ docker run -d -p 8080:8080 --name mycat tomcat 创建容器运行示例
⑩docker start 容器ID或容器名 启动容器
⑪docker restart容器ID或容器名 重启容器
⑫docker stop 容器ID或容器名 停止容器
⑬docker kill 容器ID或容器名 强制停止容器
⑭docker rm 容器ID 删除已停止的容器
五.使用docker安装mysql
A.通过docker search mysql搜索镜像
B.下载第一个镜像,通过docker pull docker.io/mysql命令
C.通过docker images查看镜像
D.创建容器运行docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=root docker.io/mysql:latest
E.进入容器命令:docker exec -it 容器id /bin/sh F.mysql -uroot -proot
G.授权用户给第三方访问 H.create user ‘java01’ identified with
mysql_native_password by ‘accp’; I.grant all privileges on.to ‘java01’;
J.使用sqlyog连接mysql
六.安装tomcat
A.通过docker pull tomcat 拉取镜像
B.创建容器运行 docker run -d -p 8080:8080 --name
mytomcat tomcat:latest
C.测试访问ip:8080(记得关闭防火墙)
D.进入容器docker exec -it mytomcat bash ,在这里用到了上面提到的容器别名mytomcat
E.部署项目到tomcat docker cp demo.war mytomcat:/usr/local/tomcat/webapps
F.重启窗口 docker restart mytomcat
七.安装nginx
A.通过docker pull nginx 拉取镜像
B.创建挂载目录 mkdir -p /data/nginx/{conf,conf.d,html,log}
C.创建容器运行 docker run -it -d -p 8085:80 --name nginx2 nginx
D.进入容器docker exec -it nginx2 /bin/bash
E.从容器复制文件到宿主机 docker cp 容器id:/etc/nginx/nginx.conf 虚拟机目录
D.编辑nginx.conf配置文件加入以下内容
server{
listen 80;
server_name 192.168.10.65; #你的serverName
root /usr/share/nginx/html;
index index.html;
}
E.再次创建容器运行(把容器文件挂载到宿主机上面)
docker run
–name my_nginx
-d -p 80:80
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/log:/var/log/nginx
-v /data/nginx/html:/usr/share/nginx/html
nginx
F. 准备素材在/data/nginx/html创建一个html文件名为test.html
G.测试访问192.168.10.65:80/test…html
八 安装rabbitmq
A.下载 docker pull rabbitmq:3-management
B.启动docker run -d --hostname> my-rabbit --name rabbit -p 15672:15672 -p 5672:5672
rabbitmq:3-management
C).访问 ip:15672
九.生成镜像
1.创建一个centos镜像
通过命令下载dockerhub上的官方镜像
docker pull centos
2.创建一个基于centos镜像的容器
通过命令docker images查看服务器上已有的镜像
docker run -dit -p 4000:8080 centos镜像名或id
创建一个基于centos镜像的容器在后台运行并将服务器的4000端口映射到容器中的8080端口
3.将jdk,tomcat的安装包和web项目上传至镜像中
docker cp /usr/local/jdk安装包 容器名:容器地址docker cp /usr/local/tomcat安装包 容器名:容器地址docker cp /usr/local/web项目 容器名:容器地址1
4.进入容器并操作
docker attach 容器名或id
进入容器中
安装jdk和tomcat的步骤和在linux中安装步骤一致,你可以把容器当成一个linux虚拟机, 之后启动tomcat服务
5.验证
在浏览器上输入http://服务器ip:4000,如果出现tomcat页面则成功了
6.将容器打包成镜像
docker commit -a “” -m “my apache” 容器名称或id 打包的镜像名称:标签
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker commit -a "ganyongming" -m "mytomcat" eda39a88cdcb
十.上传至你的阿里云
(1)命令登录到阿里云的doker仓库(需要提前创建),–username为阿里云的用户名
a. docker login --username=liuzhijun1991 -`b. 输入阿里云密码
(2)为本地镜像添加tag 语法 docker tag 镜像id 仓库地址:标签
a.docker tag bc244747a754 -/docker_java01/aliyun:latest
(3).push到docker仓库 语法 docker push 仓库地址:标签
docker push -/docker_java01/aliyun:latest
十一.使用下载生成好的镜像
docker pull -/docker_java01/aliyun