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来个虚拟机
|