【Docker】初级篇

(一)Docker简介

【1】docker是什么

环境配置相当麻烦,换一台机器,就要再重新配置一遍环境,费力费时。Docker可以从根本上解决这个问题,软件可以带环境安装,也就是说安装的时候把原始环境一模一样的复制过来。

可以把源码+配置+环境+版本等等一起打包成一个镜像文件,直接移植到新的服务器

搬家不再是打包行李叫货拉拉了,而是直接把楼搬过去

在这里插入图片描述

解决了运行环境和配置问题的软件容器,方便做持续继承并有助于整体发布的容器虚拟

【2】容器与虚拟机比较

(1)容器发展简史

(2)传统虚拟机技术
在这里插入图片描述

(3)容器虚拟化技术
在这里插入图片描述在这里插入图片描述

(4)对比
在这里插入图片描述

扫描二维码关注公众号,回复: 15231648 查看本文章

【3】能干嘛

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【4】去哪下

在这里插入图片描述

(二)Docker安装

【1】前提说明

在这里插入图片描述

【2】Docker的基本组成

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

(1)镜像image
java的类模板
(2)容器container
通过java类模板new出来的一个个实例对象
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0gb4UOiC-1672584048776)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1670)]

(3)仓库repository
就是用来存放镜像的地方
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1URO0XBA-1672584048777)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1671)]

在Docker的官方仓库中已经有了很多redis的镜像实例,再安装redis的时候就不用像以前一样下载、解压、安装gcc等等一系列步骤了,直接从仓库中拉取镜像即可。

(4)小总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdWaJXI3-1672584048777)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1672)]

【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】阿里云镜像加速

登陆阿里云,点击控制台,然后点击菜单,找到“容器镜像服务”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRAD3MdN-1672584376343)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1677)]

创建个人容器镜像托管服务

然后点击镜像工具,进入镜像加速器,即可看到阿里云加速器地址,把这个加速器地址配置到docker容器里
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cxemBKYp-1672584376344)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1678)]

(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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w2MT66LX-1672584376344)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1679)]

(三)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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jFOZ2OMd-1672584505964)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1683)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxU8Zatw-1672584505965)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1684)]

(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镜像演示)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gIYuRZV4-1672584650527)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1685)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u1v6OW1R-1672584650528)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1686)]

(1)新建+启动容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x424aeMm-1672584650529)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1687)]

使用镜像ubuntu:latest以交互模式启动一个容器,在容器内执行/bin/bash命令使用shell交互

docker run -it ubuntu /bin/bash

换一种方式启动,给容器指定名字

docker run -it --name=myubuntu ubuntu bash

(2)列出当前所有正在运行的容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fDX5pvt6-1672584650530)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1688)]

docker ps -a
docker ps -n 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b6BkrETT-1672584650531)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1689)]

(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 容器名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMpc9Soj-1672584650532)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1690)]

# 前台交互式启动(这种不可以用,直接关掉了)
docker run it redis:6.0.8

# 后台守护式启动
docker run -d redis:6.0.8

(2)查看容器日志
想看看鲸鱼背上集装箱的日志内容,例如想看看docker中redis的启动日志

docker logs 容器id

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aSd5Eg0y-1672584650532)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1691)]

(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
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zkznod91-1672584965824)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1696)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JjJ1JffH-1672584965825)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1697)]

(3)新建my.cnf,通过容器卷同步给mysql容器实例(解决中文乱码问题)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rgwKvhtl-1672584965825)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1698)]

[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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrb97lky-1672584965826)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1699)]

(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文件夹
在这里插入图片描述注意的是redis.conf里的内容要修改

#关闭保护,用于测试
protected-mode no
port 6379

(4)创建redis容器,并且挂载容器卷

docker run -p 6379:6379 --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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UNVYMFEV-1672584965828)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1702)]

(5)进入redis容器的终端

docker exec -it myredis3 /bin/bash

然后输入redis-cli进入redis的客户端
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JxBeYuNv-1672584965829)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1703)]

(6)测试存放数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZwqI4fU-1672584965829)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1704)]

猜你喜欢

转载自blog.csdn.net/weixin_44823875/article/details/128516709