大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
docker基础笔记
docker命令参考文档:https://docs.docker.com/engine/reference/commandline/cli/?spm=5176.8351553.0.0.4ef81991PzJJbJ
docker命令大全中文版:https://www.runoob.com/docker/docker-command-manual.html
(一)docker安装
docker需要ubuntu的内核是高于3.10命令:uname -r
安装命令: sudo apt-get install docker.io
查看版本:docker –version
启动命令: sudo systemctl start docker
查看状态: sudo systemctl status docker
停止命令: sudo systemctl stop docker
设置和系统一致默认开启:systemctl enable docker
卸载:sudo apt-get remove docker docker-engine docker-ce docker.io
(二)docker架构
client——–Hosts(docker)———registries(docker的镜像仓库)
docker镜像:类似于Ubuntu镜像,就是面向对象中的类的含义
docker容器:Ubuntu的具体的实例(运行得到虚拟机),就是面向对象中的对象的含义
仓库:代码控制中心,用于保存镜像
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivfsITmn-1640442215486)(en-resource://database/1400:1)]
(三 )配置docker的镜像加速器
My的地址:每个人的地址不一样
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
加速器的地址:https://h7zxs7i7.mirror.aliyuncs.com
操作命令:
- 安装/升级Docker客户端推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce
- 配置镜像加速器针对Docker客户端版本大于 1.10.0 的
- 用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
在Ubuntu下执行下面的命令: - sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://h7zxs7i7.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
配置完成的结果查看(如下则为成功):
linux@linux:~$ cat /etc/docker/daemon.json
{
“registry-mirrors”: [“https://h7zxs7i7.mirror.aliyuncs.com”]
}
(四)docker服务相关命令(守护进程命令):同上
(五)docker镜像相关命令:
查看镜像:linux@linux:~$ sudo docker images ls
搜索镜像:linux@linux:~$ sudo docker search redis (镜像名)
拉取镜像:sudo docker pull redis,或者sudo docker pull redis:版本号
查看需要下载的镜像的版本的地方:https://hub.docker.com/_/redis
删除镜像:sudo docker rmi 镜像ID号
(六)docker容器相关命令
(1)启动容器方法1(交互式容器):
linux@linux:~$ sudo docker run -it centos /bin/bash (以命令行方式启动容器)
sudo docker run -itd –name centOS-8 centos /bin/bash
以上可以给容器进行命名:便于 标记和认识
参数说明:-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端
直接输入 exit:
(2)启动容器方法2(守护式容器):
命令:sudo docker run -itd centos /bin/bash
(3)查看运行的容器:docker ps -a
(4)停止容器:sudo docker stop fafc4ddf0843 (容器ID)
(5)重启容器:sudo docker restart fafc4ddf0843 (容器ID)
(6)进入容器:sudo docker exec -it bfaa0dc5420f(ID) /bin/bash
(7)删除容器:sudo docker rm 容器的ID 正在运行的容器不允许删除
(8)查看容器的信息:sudo docker inspect bfaa0dc5420f(ID)
(七)docker的数据卷
概念:宿主机中的一个目录或者文件
理解:相当于一个U盘,可以插在多个电脑上,分别进行编辑,数据不丢失
为什么要数据卷:
(1)容器删除了,数据还存在吗?解决问题:容器数据的持久化
(2)容器和外部如何通信的呢? 解决问题:外部数据和容器之间的通信
(3)容器之间的通信如何操作呢?解决问题:数据卷容器之间的通信
创建方法:docker run -v 宿主机的目录:容器的目录
例子:
docker run -itd –name centOS1(名字)**** -v /home/CCM:/home/ccm_container**** centos(镜像)/bin/bash
可以挂载多个目录
docker run -itd –name centos1 -v /home/CCM:/home/ccm centos /bin/bash
在创建时就需要挂载目录,能否先创建,再进行挂载呢?
数据卷容器:
作用:多容器之前的数据交互
创建:docker run -itd –name=c3 -v /volume centos
挂载容器:docker run -itd –name=c1 –volume-from centos(镜像) /bin/bash
这样就将C3容器和C1容器进行了管理,形成了数据卷容器
(八)应用部署
部署步骤:
1.搜索镜像
2.拉取镜像
3.创建容器
4.操作软件
(1)MySQL安装
部署方式:将MySQL的端口从容器中映射出来,提供给外部的进行访问(端口映射)
参考连接:https://www.runoob.com/docker/docker-install-mysql.html
(九)Dockerfile
(1)镜像的本质是什么?
本质是分层的文件系统(特殊的文件系统叠加而成的)
(2)为什么ubuntu镜像只有200M,而MySQL却有500M
Ubuntu基于宿主机的文件系统,而MySQL需要在宿主机上进一步的安装新的文件系统(夫镜像),并在新的文件系统上再次安装MySQL,就会导致文件的大小发生变化
MySQL(应用,docker镜像)
|
JDK(应用镜像)
|
rootfs (基础镜像)
|
bootfs(宿主机镜像)
以上的好处:增加复用性
容器转换成镜像
命令:docker commit 5c8a157b826(源镜像IP) redis1225(新的镜像名):1.1(镜像的版本号)
docker save -o 压缩文件名称 镜像名称:版本号 打包的镜像
docker load -i 压缩文件名称 解压缩文件镜像
file文件的书写:
具体的里面的每个关键字:
https://www.runoob.com/docker/docker-dockerfile.html
构建镜像:
docker build -t nginx:v3 .
docker build -f ./centOS8_dockerfile -t centos:1.0 .
文件的内容:
FROM centos:latest
MAINTAINER author:CCM,time:1225
RUN yum -y install python
&& yum -y install vim
&& usradd CCM_dockerfile_cmd_test
&& touch /home/docker_123_test
&& mkdir -p /home/CCM/CCM2/CCM3
CMD /bin/bash
ADD命令用来将自定义的软件添加到docker镜像中,得到的镜像就是包含了打包的软件的
(十)Docker的服务编排
(十一)私有仓库
私有仓库也是一个镜像,也可以执行镜像的操作
拉取私有仓库:docker pull registry
运行:docker run -itd –name=registry -p 5000:5000 registry
测试成功结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CzjOseAG-1640442215487)(en-resource://database/1402:1)]
上传镜像至私有仓库:
配置文件:vi /etc/docker/daemon.json,增加一条信任的信息
“insecure-registries”:[“192.168.5.133:5000”]
标记镜像为私有仓库镜像:
docker tag redis1225:1.1 192.168.5.133:5000/redis1226:版本号
redis1225:1.1 需要给镜像加上版本号,否则是最新的镜像
完成本步骤后,得到ID是一样的,镜像名不一样
上传命令:
docker push 192.168.5.133:5000/redis1226 镜像的名字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dYO1XHmD-1640442215488)(en-resource://database/1404:1)]
上传结果在WEB端查看:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L6svBI93-1640442215488)(en-resource://database/1406:1)]
私有仓库的镜像的拉取:
docker pull 镜像名
需要加上设备的IP的端口号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbp2aWgR-1640442215489)(en-resource://database/1408:1)]
(十二)容器和虚拟机的比较
相同点:具有相同的资源隔离和资源分配优势
差异点:传统虚拟机可以运行不同的操作系统,容器只能运行宿主机类似的操作系统
启动时间差异大,容器启动时间短,虚拟机时间长
性能使用不一样,容器接近宿主机原生的性能
系统支持的数量不一样,支持近1000个容器,虚拟机近10来个虚拟机
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168445.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...