【Docker】初级篇
- (一)Docker简介
- 【1】docker是什么
- 【2】容器与虚拟机比较
- 【3】能干嘛
- 【4】去哪下
- (二)Docker安装
- 【1】前提说明
- 【2】Docker的基本组成
- 【3】安装步骤
- (1)确定是CentOS7及以上版本
- (2)卸载旧版本
- (3)yum安装gcc相关
- (4)安装需要的软件包
- (5)设置stable镜像仓库
- (6)更新yum软件包索引
- (7)安装DOCKER CE
- (8)启动docker
- (9)测试
- (10)卸载(如果要卸载的话)
- (11)底层原理说明为什么docker要比虚拟机更快
- 【4】阿里云镜像加速
- (1)先创建文件夹
- (2)执行脚本
- (3)重新加载配置文件
- (4)重新启动docker
- (5)查看 daemon.json 是否已经生效了
- (三)Docker常用命令
- 【1】帮助启动类命令
- 【2】镜像命令
- 【3】容器命令
- (1)新建+启动容器
- (2)列出当前所有正在运行的容器
- (3)退出容器
- (4)启动已停止运行的容器
- (5)重启容器
- (6)停止容器
- (7)强制停止容器
- (8)删除已停止的容器
- (9)重要补充内容
- 【4】小总结
- (四)Docker镜像
- (五)本地镜像发布到阿里云
- (六)本地镜像发布到私有库
- (七)Docker容器数据卷
- (八)Docker常规安装简介
- 【1】安装Tomcat
- 【2】安装Mysql
- 【3】安装redis
(一)Docker简介
【1】docker是什么
环境配置相当麻烦,换一台机器,就要再重新配置一遍环境,费力费时。Docker可以从根本上解决这个问题,软件可以带环境安装,也就是说安装的时候把原始环境一模一样的复制过来。
可以把源码+配置+环境+版本等等一起打包成一个镜像文件,直接移植到新的服务器
搬家不再是打包行李叫货拉拉了,而是直接把楼搬过去
解决了运行环境和配置问题的软件容器,方便做持续继承并有助于整体发布的容器虚拟
【2】容器与虚拟机比较
(1)容器发展简史
(2)传统虚拟机技术
(3)容器虚拟化技术
(4)对比
【3】能干嘛
【4】去哪下
(二)Docker安装
【1】前提说明
【2】Docker的基本组成
(1)镜像image
java的类模板
(2)容器container
通过java类模板new出来的一个个实例对象
(3)仓库repository
就是用来存放镜像的地方
在Docker的官方仓库中已经有了很多redis的镜像实例,再安装redis的时候就不用像以前一样下载、解压、安装gcc等等一系列步骤了,直接从仓库中拉取镜像即可。
(4)小总结
【3】安装步骤
(1)确定是CentOS7及以上版本
(2)卸载旧版本
(3)yum安装gcc相关
更新yum
yum -y update
更新gcc
yum -y install gcc
yum -y install gcc-c++
(4)安装需要的软件包
yum install -y yum-utils
(5)设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(6)更新yum软件包索引
yum makecache fast
(7)安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
(8)启动docker
systemctl start docker
(9)测试
ps -ef|grep docker
docker version
docker run hello-world
看到打印的那句话“Hello from Docker”说明启动成功了
(10)卸载(如果要卸载的话)
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
(11)底层原理说明为什么docker要比虚拟机更快
【4】阿里云镜像加速
登陆阿里云,点击控制台,然后点击菜单,找到“容器镜像服务”
创建个人容器镜像托管服务
然后点击镜像工具,进入镜像加速器,即可看到阿里云加速器地址,把这个加速器地址配置到docker容器里
(1)先创建文件夹
mkdir -p /etc/docker
(2)执行脚本
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hvmf8r55.mirror.aliyuncs.com"]
}
EOF
(3)重新加载配置文件
systemctl daemon-reload
(4)重新启动docker
systemctl restart docker
(5)查看 daemon.json 是否已经生效了
tail /etc/docker/daemon.json
(三)Docker常用命令
【1】帮助启动类命令
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:systemctl status docker
开机启动docker:systemctl enable docker
查看docker概要信息:docker info
查看docker总体帮助文档:docker --help
查看docker命令帮助文档:docker 具体命令 --help
【2】镜像命令
(1)列出本地主机上的镜像
docker images
docker images -a
OPTIONS选项说明
1-REPOSITORY:表示镜像的仓库源
2-TAG:镜像的标签版本号
3-IMAGE ID:镜像id
4-CREATED:镜像创建时间
5-SIZE:镜像大小
同一个仓库源可以有多个TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果不指定一个镜像的版本标签,例如你只使用ubuntu,docker会默认使用ubuntu:latest镜像
(2)查找镜像
docker search 某个镜像的名字
docker search --limit 5 redis
(3)拉取下载镜像
docker pull 某个镜像名字
docker pull redis 6.0.8
(4)查看所占的空间
docker system df 查看镜像、容器、数据卷所占的空间
(5)删除镜像
docker rmi 某个docker虚悬镜像是什么?
docker rmi -f IMAGE ID
docker rmi -f feb5d9fea6a5
【3】容器命令
有镜像才能创建容器,这是根本前提(下载一个Ubuntu镜像演示)
(1)新建+启动容器
使用镜像ubuntu:latest以交互模式启动一个容器,在容器内执行/bin/bash命令使用shell交互
docker run -it ubuntu /bin/bash
换一种方式启动,给容器指定名字
docker run -it --name=myubuntu ubuntu bash
(2)列出当前所有正在运行的容器
docker ps -a
docker ps -n 1
(3)退出容器
exit:run进去容器,exit退出,容器停止
ctrl+p+q:run进去容器,ctrl+p+q退出,容器不停止
(4)启动已停止运行的容器
docker start 容器ID或者容器名
(5)重启容器
docker restart 容器ID或者容器名
(6)停止容器
docker stop 容器ID或者容器名
(7)强制停止容器
docker kill 容器ID或者容器名
(8)删除已停止的容器
注意的是:rm删除之前必须先stop停下来,否则直接删除会报错。如果一定要强制删除正在运行的容器,可以使用 rm -f 强制删除
删容器
docker rm 容器ID
删镜像
docker rmi 容器ID
(9)重要补充内容
(1)启动守护式容器(后台服务器)
在大部分的场景下,我们希望docker的服务是在后台运行的,我们可以通过-d指定容器的后台运行模式
docker run -d 容器名
# 前台交互式启动(这种不可以用,直接关掉了)
docker run it redis:6.0.8
# 后台守护式启动
docker run -d redis:6.0.8
(2)查看容器日志
想看看鲸鱼背上集装箱的日志内容,例如想看看docker中redis的启动日志
docker logs 容器id
(3)查看容器内运行的进程
docker top 容器ID
(4)查看容器内部细节
docker inspect 容器ID
(5)进入正在运行的容器并以命令行交互
重新进入
// 推荐使用这个,因为退出容器终端,不会导致容器的停止
docker exec -it 容器ID /bin/bash
// 重新进入
docker attach 容器ID
attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。
exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止。
(6)从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
(7)导入和导出容器
docker export 容器ID > 文件名.tar
【4】小总结
(四)Docker镜像
(五)本地镜像发布到阿里云
(六)本地镜像发布到私有库
(七)Docker容器数据卷
(八)Docker常规安装简介
【1】安装Tomcat
docker pull bllygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
【2】安装Mysql
(1)拉取mysql镜像
docker pull mysql:5.7
//查看当前虚拟机的3306端口是否被占用,如果有的话就用kill命令删除
ps -ef|grep mysql![在这里插入图片描述](https://img-blog.csdnimg.cn/c2a6ef0b4d0248c09d8797823349fbd2.png)
(2)创建一个mysql容器,首先在根目录下创建好一个文件夹allenuse
docker run -d -p 3306:3306 --privileged=true -v /allenuse/mysql/log:/var/log/mysql -v /allenuse/mysql/data:/var/lib/mysql -v /allenuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
(3)新建my.cnf,通过容器卷同步给mysql容器实例(解决中文乱码问题)
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
(4)重新启动mysql容器实例再重新进入并查看字符编码
docker restart mysql
docker exec -it mysql /bin/bash
(5)新建库新建表再插入中文测试
(6)如果不小心把mysql的容器删除了如何恢复
之前已经配置了容器卷,mysql的数据已经在本地存储了,只需要重新执行创建容器的命令就行了
docker run -d -p 3306:3306 --privileged=true -v /allenuse/mysql/log:/var/log/mysql -v /allenuse/mysql/data:/var/lib/mysql -v /allenuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
【3】安装redis
(1)拉取redis镜像
docker pull redis:6.0.8
(2)在宿主机下新建目录/app/redis
mkdir -p /app/redis
(3)把一个redis.conf文件模板拷贝进/app/redis目录下
touch redis.conf
并且新建一个data文件夹
(4)创建redis容器,并且挂载容器卷
docker run -p 16379:16379 --name myredis3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
使用 docker ps 或者 docker ps -a 命令查看是否创建成功
如果启动不成功的话,可以查看一下启动日志
docker logs myredis3
(5)进入redis容器的终端
docker exec -it myredis3 /bin/bash
然后输入redis-cli进入redis的客户端
(6)测试存放数据