Docker安装以及其它容器的安装
一,docker安装环境前提
Centos6.5及以上以下介绍的基于centos7版本的为准
Docker镜像库(阿里云):https://cr.console.aliyun.com/cn-beijing/instances/images
二,docker安装命令
1.yum install -y epel-release
2.安装docker:yum install -y docker-io
3.安装好位置配置文件地址:/etc/sysconfig/docker
4.启动docker:service docker start
5.查看docker版本: docker version(有东西代表安装成功)
6.获取阿里云镜像加速地址:
6.1登录阿里云开发者平台
https://www.aliyun.com/?accounttraceid=a09d6381857c4680a5508c3625c6961bwbnq
6.2获取加速器地址
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
找到阿里云的开发者平台找容器镜像服务
复制加速器地址
7.添加阿里云镜像加速地址
添加加速器地到文件中:vim /etc/docker/daemon.json
“registry-mirrors”: [“你的加速器地址”]
{
“registry-mirrors”: [“https://dgnby6tc.mirror.aliyuncs.com”]
}
ESC然后:wq 回车(保存退出)
sudo systemctl daemon-reload
sudo systemctl restart docker.service
若重启出现错误可参考播客:https://blog.csdn.net/w1316022737/article/details/83692701
若出现:Job for docker.service failed because the control process exited with error code.的错误
1.首先查看了一下内核版本
2.因为使用命令: yum install docker下载时, 默认下载的是Docker的最新版本, 但是内核版本低的话可能不兼容新版本Docker, 所以有可能出现如上错误
解决方案:
步骤一:将以前下载好的Docker卸载干净, 使用如下命令:
yum remove docker-*
步骤二:更新该Liunx系统的内核版本,使用如下命令:
yum update
建议更新完之后, 重启一下系统
步骤三:继续下载安装docker(尽量使用高级管理员权限下载)使用如下命令
yum install dacker
步骤四:使用如下命令启动docker
systemctl start docker
如果使用docker命令时出现如下错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
第一个原因可能是因为docker没有启动
第二个原因就是因为docker出现错误
归根结底都是docker启动问题, 解决方案还是以上步骤
Linux系统下配置完加速器需要检查是否生效
ps -ef|grep docker
如果报错:
[root@localhost /]# docker run hello-world
Unable to find image ‘hello-world:latest’ locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See ‘docker run --help’.
查找过程就不多说了,直接说解决方法
[root@localhost network-scripts]# vi ifcfg-ens33
DNS1=8.8.8.8
8.查看docker
docker info
9.镜像命令
9.1Options说明
列出本地所有镜像docker images
docker
-a 列出本地所有的镜像
-q 只显示镜像id
–digests:显示镜像摘要信息
–no-trunc:显示完整的镜像信息
9.2docker其它命令
docker search 某个xxx镜像名字 https://hub.docker.com上查找就像查找maven一样
docker search -s 30 tomcat 代表点赞数超过30的tomcat版本过滤出来
docker search -s 30 --no-trunc tomcat 指没有被省略的信息
docker pull 某个xxx镜像名字:版本 默认最新版 拉取某个影响
` 某个xxx镜像名字 删除某个镜像
docker rmi -f 名 强制删除 若删除多个 名 名
docker rmi -f $(docker images -qa) 删除全部镜像
ps - ef 查看全部运行的
查看docker下正在运行的容器 docker ps
docker下最近运行的两个容器 docker ps -n 2
退出容器(docker集装箱):exit关闭当前容器并退出 ctrl +p +q退出但不停止容器
上一次运行的 docker ps -l
启动容器并取别名并进入运行的容器实例中 docker run it --name 要起的别名 要运行的容器名
通过id启动容器
docker start 要启动的容器id
Hub上下载tomcat镜像到本地并成功运行
docker run -it -p 8080:8080 tomcat
-p 主机端口:docker容器端口
-P 随机分配端口
-i 交互
-t 返回给终端
以后台模式启动一个容器 这个有问题:运行这个容器后用docker ps 看没有运行的容器因为后台容器运行就必须要有一个前台进程
容器运行如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的.所以必须前台进程的形式运行
docker run -d centos
重启容器
docker restart 要重启的容器id
停止某个容器类似关机
docker stop 要重启的容器id
强制重启某个容器
docker kill 要重启的容器id
删除已经停止的容器
docker rmi 代表i image镜像 不带i 代表删除容器
查看现在位置
pwd
查看现在位置下全部文件名
ls -l
查看容器日志
docker logs -f -t --tail 容器id
-t 加入时间戳
-f 跟随最新的日志打印
-tail 数字显示最后多少条
Ctrl+c停止退出
后台启动容器并每两秒启动打一下日志无限循环
docker run -d centos /bin/sh -c “ while true; do echo hello zwx;sleep 2;done”
查看容器内运行的进程
docker top 容器id
查看容器内部细节
docker inspect 容器id
进入正在运行的容器并以命令进行交互
docker run -it centos 运行并进入容器根目录 也可以 centos后加 bin/bash一个意思
容器id 从宿主机进入该容器id中 不会启动进程
ls -l /tmp
docker exec -t 容器id ls -l /tmp 其中-t代表进去直接获取执行的结果 进去直接启动进程也可-it
sudo docker exec -it 容器id /bin/bash 进入容器
从容器内拷贝文件到主机上
docker cp 容器id: /tmp/yum.log /root 把对应容器下的指定文件拷到当前主机的root目录下
从容器内拷贝文件到主机上
容器里无法使用vi 命令
apt-get update
apt-get install vim
9.3 options说明常用:有些一个减号有些两个
–name=”容器名字”:为容器指定一个名称
-d:后台运行容器,并返回容器id,也即启动守护式容器;
-i:以交互模式运行容器,通常与-t同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
-P:随机端口映射
-p:指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
如:docker run -it 镜像id
9.4docker镜像commit操作补充:
docker commit提交容器副本使之成为一个新的镜像
docker commit -m=”提交的描述信息” -a=”作者” 容器id 要创建的目标镜像名:[标签名(标签名其实就是自己起的版本名)]
10.概念
镜像中包含多个容器,其中docker为镜像,里边的tomcat,nginx等都为容器
docker为联合文件系统unix 底层为bootfs存储docker也是,到ubuntu 和centos以bootfs为基础有研发出上级rootfs存储
容器的镜像一层层的下载,比如tomcat容器先下载c环境,然后下载jdk环境,然后下载tomcat
分层的好处就是共享资源
镜像一层套一层
11.Docker容器数据卷(可以理解为移动硬盘)
11.1能干嘛:
概念docker的数据持久化作用
容器间继承+数据共享
11.2数据卷容器内命令添加容器内命令添加:
命令: docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名 /bin/bash
-v v是volumes 卷的英文字母缩写
代表宿主机的绝对路径下与镜像实例容器内目录下进行数据共享
容器带权限添加命令
命令: docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
ro代表read-only
不加ro默认可读可写
查看数据卷是否挂载成功
docker inspect 容器id
容器退出但是宿主机还可以修改并且同步
11.3数据卷容器内dockerfile添加:
是什么?
根目录下创建mydocker文件夹打开进入
可在DockerFile中使用VOLUME指令来给镜像添加一个或多个数据卷(仅支持容器内)
dockerfile构建
创建镜像 添加两个数据卷创建新的镜像zzy/centos
docker build -f /mydocker/DockerFile -t zzy/centos . 类似于加载卷的配置文件组成新镜像
Dc02和dc03继承自dc01
12.Dockerfile解析
DockerFile体系结构以及关键字
13.Docker容器目录位置
CoreOS下默认是在/var/lib/docker下。容器就存放在/var/lib/docker/containers里。
/var/lib/docker/image/overlay2/layerdb/mounts里
三,Docker镜像的制作,上传,拉取和部署(利用阿里云)
1.申请阿里云Docker仓库
进入阿里云镜像仓库服务:https://cr.console.aliyun.com/cn-shenzhen/instances/repositories
参考博客:https://blog.csdn.net/jacksonary/article/details/78961612
若上传地址不理解或者私库公库不理解可参考博客:https://blog.csdn.net/qq_16605855/article/details/79961933
1.1进入阿里云申请页面:https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
创建自己的命名空间:zhuweixu
创建自己的镜像仓库:images
1.2从加速器切换到仓库地址登录推送镜像
sudo docker login --username=q158258 registry.cn-shenzhen.aliyuncs.com
sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/zhuweixu/images:[镜像版本号]
sudo docker push registry.cn-shenzhen.aliyuncs.com/zhuweixu/images:[镜像版本号]
1.3 从Registry中拉取镜像
sudo docker pull registry.cn-shenzhen.aliyuncs.com/zhuweixu/images:[镜像版本号]
1.3个人总结
sudo docker login --username=q158258 registry.cn-hangzhou.aliyuncs.com
sudo docker tag 镜像id 阿里云镜像仓库访问凭证/命名空间/镜像仓库名称
实例:docker tag d435eee2caa5 registry.cn-hangzhou.aliyuncs.com/zhuweixu/images
sudo docker push 阿里云镜像仓库访问凭证/命名空间/镜像仓库名称
实例:sudo docker push registry.cn-hangzhou.aliyuncs.com/zhuweixu/images
1.5随后可以在阿里云仓库中查看推送的镜像,如下:
四,Docker下安装mysql
1.安装sql(仅mysql5.7作为参考)
https://blog.csdn.net/woniu211111/article/details/80968154
2.安装sql(仅mysql8作为参考)
https://blog.csdn.net/lanpiao_87/article/details/86064826(可靠)
https://blog.csdn.net/woniu211111/article/details/80968154
https://blog.csdn.net/qq_32867467/article/details/82944106
3.用Navicat连接本机Docker的Mysql 和一些问题:
https://blog.csdn.net/weixin_42242494/article/details/80630267
4.Docker容器挂载数据卷出现Permission denied权限问题的解决办法:
https://blog.csdn.net/skh2015java/article/details/82660020
五,docker下安装redis
1.Redis镜像安装:
查询镜像:docker search redis
拉取官方的镜像: docker pull redis:版本号
查看一下是否成功:docker images
安装成功后就变成了容器
2.Redis容器运行:
启动镜像:docker run -p 6379:6379 -d redis:latest redis-server
可做参考的博客:https://blog.csdn.net/w57685321/article/details/79339772
遇到问题,本地可访问远程不行:修改conf配置文件bind:127.0.0.1为 bind:0.0.0.0或者直接注掉或删了
可参考博客:https://blog.csdn.net/weixin_39800144/article/details/79235460
六,Docker下安装jdk1.8
参考博客:https://blog.csdn.net/huangbaokang/article/details/99749296
七,Docker下部署jar项目
参考博客:https://blog.csdn.net/jiangyu1013/article/details/81988342
八,日志文件过大设置大小
参考博客:
http://blog.zhqy.xyz/articles/2019/12/10/1575960493018.html?utm_source=hacpai.com
九,Docker下安装Tomcat
参考博客:
https://blog.csdn.net/shechaojin/article/details/89396629
操作:
第一步 : 拉取tomcat镜像 docker pull tomcat:latest
第二步 : 创建tomcat容器
docker run -d --name tomcat -p 8081:8081 tomcat:latest
docker run -d --name tomcat -v /docker/tomcat/conf:/conf -v /docker/tomcat/webapps:/webapps -p 8081:8081 tomcat
docker run --name tomcat -p 8081:8081 -v /docker/tomcat/conf:/conf -v /docker/tomcat/webapps:/webapps -d tomcat