docker学习

1.安装docker

centos使用以下命令, 不同的系统参考菜鸟教程:
菜鸟教程

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2.修复报错

刚安装好后, 会有报错现象:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

在这里插入图片描述
此时使用命令修复问题,

sudo systemctl daemon-reload
 sudo systemctl restart docker.service

3.下载portainer

使用命令拉取最新的portainer应用

sudo docker pull portainer/portainer-ce:latest

4.开始部署容器

在这里插入图片描述

sudo docker run -d --restart=always -p 8080:9000 portainer/portainer-ce

5.登陆容器中应用

在浏览器中输入应用ip+端口号
就可以访问刚才部署好的容器
在这里插入图片描述


docker常用命令

以下是一些常用的Docker命令列表:

docker run:创建并运行一个新的容器。
docker start:启动一个或多个已停止的容器。
docker stop:停止一个正在运行的容器。
docker restart:重启一个容器。
docker pause:暂停一个正在运行的容器。
docker unpause:取消暂停一个容器。
docker rm:删除一个或多个容器。
docker ps:列出当前正在运行的容器。
docker images:列出本地镜像。
docker pull:拉取一个镜像到本地。
docker push:将一个本地镜像推送到远程仓库。
docker exec:在正在运行的容器中执行命令。
docker logs:查看容器的日志输出。
docker inspect:获取容器或镜像的详细信息。
docker build:根据 Dockerfile 构建一个镜像。
docker network:管理 Docker 网络。
docker volume:管理 Docker 卷。
docker-compose:使用 Docker Compose 来管理多个容器应用。
这只是一小部分常用的Docker命令,还有更多命令和参数可以根据需要进行使用。你可以使用 docker --help 命令来获取更多关于 Docker 命令的帮助和文档。

docker和k8s分别用在什么场景?各自特点

Docker和Kubernetes(通常简称为K8s)是两个不同的工具,用于不同的场景:

Docker适用于以下场景:

应用程序的容器化:Docker可以将应用程序及其依赖项打包成一个独立的容器,使应用程序在不同的环境中具备可移植性和一致性。

简化开发和测试:通过使用Docker容器,开发人员可以创建隔离的、可复制的开发和测试环境,避免了本地环境配置的差异问题。

部署和扩展微服务架构:Docker容器可以快速部署和扩展容器化的微服务,提供了更高的弹性和可伸缩性。

持续集成和持续交付:Docker容器可以与持续集成/持续交付(CI/CD)流程集成,简化和加速软件交付过程。

Kubernetes适用于以下场景:

容器编排和管理:Kubernetes提供了一套强大的工具和机制来自动化、编排和管理容器化应用程序。它可以管理大规模的容器集群,并确保应用程序的高可用性、弹性和可伸缩性。

服务发现和负载均衡:Kubernetes具备内建的服务发现和负载均衡机制,可以自动将流量路由到正确的容器实例,并确保容器的高可用性。

自动伸缩:Kubernetes支持水平扩展和自动伸缩,可以根据应用程序的负载情况自动调整容器副本数量。

跨云和多区域部署:Kubernetes是一个跨云和多区域的平台,可以将应用程序轻松地部署到不同的云提供商或地理位置,提供了更大的灵活性和可移植性。

综上所述,Docker适合于单个主机上的容器化开发和部署,而Kubernetes则适合于管理大规模、复杂的容器集群以及提供高级的编排、自动化和管理功能。通常使用Docker来构建和打包容器镜像,并使用Kubernetes来部署和管理这些镜像。


docker演变进程

容器化技术:
更快的对应用进行标准化部署。
物理机时代-> 虚拟机时代->容器化时代。
物理机时代:
在这里插入图片描述
部署非常慢
成本高。
资源浪费。
难以扩展和迁移。
受制于硬件。x86, solaris, 硬件系统和服务器平台。

虚拟化技术:
在这里插入图片描述
多部署。
资源池:把硬件资源看成池子, 池子中资源可以共享。
资源隔离: 资源独享
很容易扩展:
vm需要安装操作系统:
容器化时代:
在这里插入图片描述
容器以文件的方式进行提供。
标准化环境应用部署。
通过容器编排工具, 可以自动将容器发布到各个节点上, 一键发布、管理。
容器中包含了所有要运行的必要条件。

标准化的迁移方式
统一的参数配置
自动化部署:进行镜像还原的过程自动完成, 无需人工参与。
应用集群监控:
开发与运维之间的沟通桥梁。


docker介绍:

开源的应用容器引擎, 基于go语言开发
容器完全基于沙箱机制, 容器开销极低。非常轻松的一台电脑部署多个容器。
docker基本就是容器化技术的代名词。
docker也具备一定的虚拟化职能。
在这里插入图片描述
docker deamon守护进程:镜像获取, 容器创建。
rest api :小的tomcat. http请求响应。
应用协议采用http
docker cli: 命令行工具
基于c/s架构, 服务器和客户端不用布置在同一台电脑上。

容器与镜像:
镜像:镜像是文件, 只读的, 提供了运行程序完整的软硬件资源,
是应用程序的集装箱。
容器:容器是镜像的实例, 由docker负责创建, 容器之间彼此隔离。

docker执行流程:

在这里插入图片描述
docker deamon守护进程。
client用于发送命令-host接收命令, 处理- registry用于储存镜像提供下载功能。


docker常用命令

docker快速部署tomcat
docker pull 镜像名<:tags> -从远程仓库抽取镜像
docker images -查看本地镜像
 docker run 镜像名<:tags> -创建容器, 启动应用。
docker ps -查看正在运行中的镜像
docker rm <-f> 容器id -删除容器。
docker rmi <-f> 镜像名:<tags> -删除镜像。
docker run -p 8000:8080 -d tomcat 
-p代表端口映射
-d代表后台运行
docker rm + 容器编号, 删除容器
删除容器之前, 需要先停止容器运行, 
docker stop + 容器编号 =》 然后再执行 docker rm 

在这里插入图片描述
在容器内部执行命令。
格式:
docker exec [-it] 容器id /bin/bash
在这里插入图片描述
容器在宿主机上默认存放的位置在:/var/lib/docker


容器生命周期:

在这里插入图片描述

docker create + 容器id
docker start + 容器id
docker ps -a 显示所有容器
docker stop +容器id
docker unpause + 容器id

Dockerfile构建镜像:

Dockerfile是镜像描述文件:
dockerfile是一个包含用于合并组合镜像的命令的文本文件
docker通过读取dockerfile中指令按照步骤自动生成镜像
docker build -t 机构/镜像名<:tags> Dockerfile目录
在这里插入图片描述
docker build -t zhongwusun/mywebapp:1.0 .


镜像分层、快照

在这里插入图片描述
在这里插入图片描述
分层、系统快照、
构建过程中每执行一次都会有快照。加快镜像构建速度。节省资源。


dockerfile的基础指令:

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


Dockerfile执行指令:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cmd命令不一定会被执行。
entrypoint一定会被执行, 当有多个entrypoint, 则最后一个会被执行。


构建redis镜像:

对应dockerfile文件编写

FROM centos
#安装对应依赖工具项目
RUN ["yum", "install", "-y", "gcc", "gcc-c++", "net-tools", "make"]
WORKDIR /usr/local
ADD redis-4.0.14.tar.gz ./
WORKDIR /usr/local/redis-4.0.14/src
RUN make && make install
WORKDIR /usr/local/redis-4.0.14
ADD redis-7000.conf .
#对外暴露7000端口
EXPOSE 7000
CMD ["redis-server", "redis-7000.conf"]

容器间link单向通信

每个docker容器都会有自己环境的虚拟ip:
容器间的虚拟ip之间默认连通
在这里插入图片描述
docker run -d --name web tomcat
生成了一个名为web的容器。
docker run -d --name database -it centos /bin/bash
生成一个稳定后台运行的database。
docker inspect 容器id 查看容器属性。
在这里插入图片描述
使用–link关联容器, 实现容器间单向通信, 即使ip地址发生变化, 也能实现连通。
docker run -d --name web --link database tomcat


Bridge网桥双向通信。

在这里插入图片描述
docker network ls 可以列出网络明细。
在这里插入图片描述
docker会提供默认的网桥, 一般需要新创建网桥。
创建网桥: docker network create -d my-bridge
在这里插入图片描述
docker network connect my-bridge web 将web的容器连接到新创建的网桥。
docker network connect my-bridge database
在这里插入图片描述


网桥实现原理

在这里插入图片描述
相当于是创建网桥的时候, 就是默认创建了一个虚拟网卡。


volume容器间共享数据

在这里插入图片描述
在宿主机上实现多个容器间文件内容共享。
在这里插入图片描述

方法一(挂载宿主机目录):

docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
在这里插入图片描述

方法二:创建共享容器

docker create --name webpage
-v /webapps:/tomcat/webapps tomcat /bin/true
共享容器挂载点:
docker run --volumes-from webpage --name t1 -d tomcat
在这里插入图片描述
挂载
docker run --name t1 -p 8000:8080 -d -v /data/pages:/usr/local/tomcat/webapps tomcat

创建共享容器
docker create --name webpage -v /data/pages:/usr/local/tomcat/webapps tomcat /bin/true

docker run -p 8002:8000 --volumes-from webpage --name t3 -d tomcat


docker compose使用

docker compose
容器编排工具。
先部署哪个, 后部署哪个, 操作就是容器编排。

docker compose 单机多容器的部署工具
通过yml文件定义多容器如何部署
win/mac默认提供docker compose , linux需要安装。

使用docker compose 来编排一个wordpress应用。
创建docker-compose.yml文件, 内容为:

#指定 docker-compose.yml 文件的版本
version: '3.3'

# 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     # 定义容器重启策略
     restart: always
     # 设置环境变量, environment 的值可以覆盖 env_file 的值 
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     #docker-compose up 以依赖顺序启动服务,先启动db
     depends_on:
       - db
     image: wordpress:latest
     # 建立宿主机和容器之间的端口映射关系,容器的 80 端口和宿主机的 8000 端口建立映射关系
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
# 定义容器和宿主机的卷映射关系, 其和 networks 一样可以位于 services 键的二级key和 compose 顶级key, 如果需要跨服务间使用则在顶级key定义, 在 services 中引用
volumes:
    db_data: {}

docker-compose实战

docker-compose文件示例:

#名称, 版本
version: '3.3'
#用于描述要部署的容器以及相关信息
services:
  db:
    build: ./bsbdj-db/
    # 容错机制, 上面服务宕机会进行重启容器并替换
    restart: always
    environment: 
        MYSQL_ROOT_PASSWORD: root
  
  app:
    build: ./bsbdj-app/
    #设置依赖
    depends_on:
      - db
    ports:
      - "80:80"
    restart: always

docker compose down
关闭docker compose运行。
docker compose up -d 后台启动程序
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙仲谋111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值