docker基础学习笔记总结

2022-09-22 18:34:33 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

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://h7zxs7i7.mirror.aliyuncs.com 操作命令:

  1. 安装/升级Docker客户端推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce
  2. 配置镜像加速器针对Docker客户端版本大于 1.10.0 的
  3. 用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 在Ubuntu下执行下面的命令:
  4. 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来个虚拟机

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168445.html原文链接:https://javaforall.cn

0 人点赞