• docker的简单使用


    文章目录

    docker简单学习

    1. docker相关概念

    • 仓库(Repository):仓库用于保存镜像。

    • 镜像(Image):Docker 镜像(Image)相关于mysql、zk的安装文件。

    • 容器(Container):容器是镜像运行时的实体。类似于mysql服务实例。

    2. docker安装

    docker卸载

    # 卸载软件
    sudo yum remove docker-ce docker-ce-cli containerd.io
    
    # 手动删除包含docker的目录
    # 查看包含docker的文件夹
    find / -name docker
    # 删除找到的docker文件
    rm -rf xxxxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    docker安装使用

    #1. 安装之前设置docker拉取的仓库镜像
    ## 阿里云的镜像仓库地址
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
       
    ## 清华大学源
    sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
    ## 上述两种镜像 二选一
    
    # 2. 安装docker服务
    ## 安装最新版本的docker
    sudo yum install docker-ce docker-ce-cli containerd.io    
    
    ## 列出可用docker版本 在指定版本安装
    yum list docker-ce --showduplicates l sort -r
    
    sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
    
    # 启动docker
    sudo systemctl start docker
    
    # 验证docker启动
    sudo docker run hello-world
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

    3. docker相关命令

    上述命令docker安装完成后会在服务器上安装了对应的docker服务端和docker客户端。

    docker命令

    #输入 docker 会列出docker所用可用命令
    [root@iZ2ze505h9bgsa1t9twojyZ /]# docker
    
    • 1
    • 2

    在这里插入图片描述

    # 查看某个命令详细用法
    docker ${commondName} --help 
    
    • 1
    • 2

    在这里插入图片描述
    docker镜像管理

    ## 查找镜像(根据镜像名)
    #docker search ${imageName}
    docker search mysql
    
    ## 拉取镜像 不添加tag则拉取最新版本的镜像
    docker pull [OPTIONS] NAME[:TAG]
    docker pull  mysql:5.7
    
    ## 删除镜像 需要添加-f 强制删除
    docker rmi -f [${iamge-name}|${image-id}]
    docker rmi -f hello-world
    
    ## 查看仓库中拉取的镜像
    docker image ls
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    标签

    描述

    REPOSITORY

    表示镜像的仓库源

    TAG

    镜像的标签 相当于版本

    IMAGE ID

    镜像ID

    CREATED

    镜像创建时间

    SIZE

    镜像大小

    docker容器管理

    #docker run :创建一个新的容器并运行
    
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    
    # docker启动一个mysql服务
    # 名字为msql-master  -d 后台启动 -p指定服务器的3310作为容器的3310端口
    # -v 为服务创建存储目录 -t -i 交互模式运行容器
    docker run --name mysql-master -d -p 3310:3310 -v/usr/local/mysql/data:/mysql/data  -t-i mysql:5.7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    OPTIONS说明:

    • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

    • -d: 后台运行容器,并返回容器ID;

    • -i: 以交互模式运行容器,通常与 -t 同时使用;

    • -P: 随机端口映射,容器内部端口随机映射到主机的端口

    • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    • –name=“mysql-xiu”: 为容器指定一个名称;

    • –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

    • –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

    • -h “mars”: 指定容器的hostname;

    • -e username=“ritchie”: 设置环境变量;

    • –env-file=[]: 从指定文件读入环境变量;

    • –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;

    • **-m ??*设置容器使用内存最大值;

    • –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

    • –link=[]: 添加链接到另一个容器;

    • –expose=[]: 开放一个端口或一组端口;

    • –volume , -v: 绑定一个卷

      docker 查看所有在运行的容器

      docker ps

      docker 查看所有容器(包括已经停止运行的)

      docker ps -a

      停止容器

      stop 优雅停止

      docker stop [OPTIONS] CONTAINER_ID [CONTAINER_ID…]

      kill 快速杀掉进程

      docker kill [OPTIONS] CONTAINER_ID [CONTAINER_ID…]

      #docker移除容器
      docker rm [ c o n t a i n e r I d , {containerId}, containerId,{containerId2} …]

    4. docker安装相关软件

    docker安装mysql

    默认配置安准

    #拉取镜像  tags :表示mysql的 版本比如 5.6 /5.7等等
    docker pull mysql:tags
    #运行镜像 run运行 --name 设置运行实例名称 -e配置环境变量 -v设置数据卷(程序运行过程产生的数据存在路径以及一些配置信息) -p 宿主端口:docker程序的端口  设置端口映射
    docker run --name mysql-master -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 -i -t mysql:5.7
    # 查看容器运行情况(会查询全部运行的)
    docker ps  #查询运行的全部镜像
    docker ps -a #查询全部镜像(包含没有运行的)
    # 进入容器内部
    docker exec -it ${containerId}  /bin/sh
    # 连接mysql
    mysq -uroot -p123456 
    #退出容器
    exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    show master status 查看bin-log日志状态

    使用默认配置方式启动的mysql服务,没有开启bin-log日志

    在这里插入图片描述

    指定配置安准

    -v descDataDir:srcDataDir: 指定使用宿主地址/home/mysql57/data映射到docker镜像的数据存储路径(/var/lib/mysql)。

    -v descConfDir:srcConfDir: 指定使用宿主地址/home/mysql57/conf映射到docker镜像的配置路径(/etc/mysql/)。

    #创建存放映射文件夹
    mkdir -p /home/mydata/mysql/log
    mkdir -p /home/mydata/mysql/data
    mkdir -p /home/mydata/mysql/conf
    
    • 1
    • 2
    • 3
    • 4

    my.cnf配置

    在 /home/mydata/mysql/conf配置文件中添加my.cnf配置 添加如下配置

    开启了mysql的binlog日志

    [mysqld]
    server_id=2
    log_bin = mysql-bin
    binlog_format = ROW
    expire_logs_days = 30
    
    • 1
    • 2
    • 3
    • 4
    • 5

    my.conf配置

    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    
    
    ## 指定mysql配置和数据存储地址 启动
    docker run --name mysql57 -p 3310:3306 -v /home/mydata/mysql/log:/var/log/mysql   -v /home/mydata/mysql/data:/var/lib/mysql  -v /home/mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    show master status 查看bin-log日志状态,如配置修改一样,binlog日志记录开启
    在这里插入图片描述

    5. docker可视化管理工具

    Portainer是Docker的图形化管理工具,其为一个web应用,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。

    # 搜索portainer镜像
    docker search portainer
    
    # 拉取portainer镜像
    docker pull portainer
    
    #运行镜像
    # --restart :容器重启策略,always表示在容器退出时总是重启容器
    docker run -p 9000:9000 --name protainer --restart=always  -v /var/run/docker.sock:/var/run/docker.sock -d portainer/portainer
    
    ##访问Portainer
    http://xxx.xx.xxx.xxx:9000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    首次访问需要初始化admin 用户密码信息,登录首页

    在这里插入图片描述

    进入首页,需要配置docker服务的连接地址,笔者的portainer和docker在一台服务器,所以使用Local模式连接docker

    在这里插入图片描述

    docker中对应的镜像,容器,网络配置等信息。
    在这里插入图片描述
    该应用也可以通过页面的形式创建容器,如上通过页面创建了zk服务

    在这里插入图片描述

    6. dockerfile使用

    **Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。**基于此机制我们可以对官方镜像做扩展或者将生产应用打包成镜像。

    dockerfile如何构建一个镜像

    1. 编写Dockerfile文件
    2. 构建镜像
    3. 按照普通镜像使用运行即可

    docker相关指令

    dockerfile详细说明

    制作centos镜像

    编写Dockerfile文件

    通过编写Dockerfile文件来制作Centos镜像,并在官方镜像的基础上添加vim工具。

    # 使用centos:7作为基础镜像
    FROM centos:7
    #设置镜像描述信息
    MAINTAINER xieqx 
    #配置 /usr/local路径作为变量
    ENV MYPATH /usr/local
    #进入$MYPATH 变量对应的路径中,即 cd /usr/local
    WORKDIR $MYPATH
    # 安装vim工具
    RUN yum -y install vim 
    # 暴露访问端口80
    EXPOSE 80
    # 容器启动的时候运行命令
    CMD /bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    构建镜像

    mkdir -p /home/docker/
    cd /home/docker/
    vim Dockerfile
    ##填写上述配置进入Dockerfile
    
    #构建镜像 镜像名为mycentos 版本1.0
    docker build -t mycentos:1.0 . 
    
    #查看镜像列表、
    docker images
    #查看镜像构建过程
    docker history 镜像id 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    启动镜像

    #运行 mycentos 镜像
    docker run -itd --name my-centos mycentos:1.0
    
    #查看容器运行情况
    docker ps
    
    # 进入容器内部 使用vim命令
    docker exec -it e2781c127a4b /bin/sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    制作应用镜像

    编写Dockerfile

    # jar包基于jdk ,war包基于tomcat
    FROM openjdk:8-jre
    # 进入目录
    WORKDIR /app
    #将上下文中 jar包复制到 /app目录下,并且重命名为app.jar
    ADD demo-0.0.1-SNAPSHOT.jar app.jar
    # 暴露端口
    EXPOSE 8089 
    # 启动应用固定命令
    ENTRYPOINT [ "java" , "-jar" ]
    # 动态传递jar包名
    CMD ["app.jar"] 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    构建镜像

    mkdir -p /home/docker/app/
    cd /home/app/docker/
    vim Dockerfile
    ##填写上述配置进入Dockerfile
    
    #构建镜像 镜像名为mycentos 版本1.0
    docker build -t myspboot:1.0 . 
    
    #查看镜像列表、
    docker images
    #查看镜像构建过程
    docker history 镜像id 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    启动镜像

    #运行 mycentos 镜像
    docker run -itd -p 8089:8089 --name my-spBoot myspboot:1.0
    
    #查看容器运行情况
    docker ps
    
    # 进入容器内部 使用vim命令
    docker exec -it e2781c127a4b /bin/sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

  • 相关阅读:
    11.7加减计数器,可置位~,数字钟分秒,串转并,串累加转并,24位串并128,流水乘法器,一些乘法器
    扫地机器人的“新故事”,从“第三次革命”开始
    数据结构之排序
    文件上传漏洞
    RS-485设计指南
    java毕业生设计一中体育馆管理系统计算机源码+系统+mysql+调试部署+lw
    HTML 笔记:初识 HTML(HTML文本标签、文本列表、嵌入图片、背景色、网页链接)
    zlMediaKit 11 rtsp相关--分包/sdp信令交互/排序
    设计模式——代理,静态代理及动态代理的使用
    PMP_强化练习题(一)180题(附答案及解析)
  • 原文地址:https://blog.csdn.net/m0_67393342/article/details/126327613