为什么要使用docker:
如果需要发布项目到多台机器,按照原来得方式,需要在N台服务器上进行下载安装对应得软件,执行N次相同得发布步骤,并且要进行环境兼容性得测试;一台linux上部署多个项目之间会有干扰,比如多个tomact端口不能重复,需要去改配置文件;docker是开源的应用容器引擎,可以让开发者将项目及依赖打包到成镜像,放入一个可移植的容器中
虚拟化和docker的区别:
一般的虚拟化指的是:服务器硬件系统安装操作系统,系统上安装虚拟化管理软件,安装虚拟机再进行虚拟化软件项目的安装
docker:服务器硬件系统安装操作系统,安装docker引擎,进行虚拟化安装
docker是直接使用操作系统的资源进行虚拟化, 可以达到秒级启动应用,对资源的利用率高,可以在一台服务器上部署多个docker容器,多个项目
docker三大组件:
容器、镜像、仓库
容器是镜像的一个运行实例 ,如果说虚拟机是模拟运行的一整套操作系统和跑在上面的应用,那么docker容器就是独立运行的一个或一组应用,以及应用所必须的环境
环境:centos7、jdk8、docker
1.安装docker: yum install -y docker
yum命令的安装参考https://www.cnblogs.com/Shawn-Liu/p/11627759.html
安装完后,docker version查看只有client,并提示Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决:开启docker服务 systemctl restart docker,再重新查看docker version正常
2.下载镜像:以redis3.0为例
https://hub.docker.com/docker仓库搜索redis,点击redis,选择tags,搜索需要的版本号,根据操作系统选择合适的
3. 下载速度比较慢,可以使用加速器:(本次使用的是阿里云的加速器)
找到镜像加速器,把下面的命令复制到命令行执行,
如图 执行完重新拉去redis3.0镜像,明显速度加快
4.镜像查看删除
docker images --查看所有镜像
docker rmi +IMAGE ID 或者 docker rmi +REPOSITORY:TAG --删除对应的镜像
5.创建启动、停止容器
docker create -p 16380:6379 --name redis docker.io/redis:3.0 --创建容器--docker.io/redis:3.0 表示需要创建容器的镜像名
docker ps -a 查看所有的容器(包括运行和未运行的)
docker start + CONTAINER ID --启动容器
启动完就可以连接redis了,redis-cli -h 192.168.138.134 -p 16380 -n root -a root
创建并启动容器(包括create和start命令):docker run -d -p 16380:6379 --name redis docker.io/redis:3.0 --命令中的-d是表示后台运行
停止容器:docker stop +容器名
6.进入容器
docker exec -it c1d91f507ebd bash -- i表示用标准方式输出 t表示分配一个伪终端 bash:进入容器执行的命令
进入容器之后就可以连接redis 设置redis数据,并在外部连接redis查看数据
7.查看启动日志:docker logs -f c1d91f507ebd
8.仓库:存镜像
8.1将自己的镜像上传的阿里云私服仓库
错误:
[root@localhost heqs]# docker logs b5ab709e8422
2020-08-02 06:45:28+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
find: '/var/lib/mysql/': Permission denied
chown: changing ownership of '/var/lib/mysql/': Permission denied
没权限导致的加上--privileged=true 正常启动
创建并启动容器,docker run -d --name mysql4 -v /home/heqs/mysql3:/var/lib/mysql -p 13307:3306 -e MYSQL_ROOT_PASSWORD=root --privileged=true 8679ced16d20
--privileged=true 给容器加上特定权限
-v /home/heqs/mysql3:/var/lib/mysql 指定宿主机的文件与容器文件的对应
9.dockerfile
内容:基础镜像,编辑者信息、镜像操作指令,容器启动时执行的命令