美文网首页
Docker的安装

Docker的安装

作者: 欧币杰昔 | 来源:发表于2024-03-15 11:04 被阅读0次

    Docker的安装

    Docker依赖的环境

    想要安装Docker,需要先讲依赖的环境全部下载,就像Maven依赖JDK一样

    yum -y install yum-utils device-mapper-persistent-data lvm2
    

    指定Docker镜像源

    Docker CE镜像

    默认下载Docker会去国外服务器下载,速度较慢,我们可以设置为阿里云镜像源,速度更快

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    ubuntu

    sudo apt-add-repository http://mirrors.aliyun.com/docker-ce/linux/ubuntu/docker-ce.repo
    

    安装Docker

    依然采用yum的方式安装

    yum makecache fast
    yum -y install docker-ce
    


    启动Docker并测试

    安装成功后,需要手动启动,设置为开机自启,并测试一下Docker

    # 启动Docker服务
    systemctl start docker
    # 设置开机自动启动
    systemctl enable docker
    # 测试   运行hello-world 镜像 根据这个镜像 创建容器
    docker run hello-world
    

    查看本地全部镜像

    docker images
    

    配置阿里云镜像地址

    访问该地址

    https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
    

    复制这段代码,粘贴运行

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    Docker-Compose

    之前运行一个镜像,需要添加大量的参宿,可以通过Docker-Compose编写这些参数。而且Docker-Compose可以帮助我们批量的管理容器。这些信息只需要通过一个docker-compose.yml文件去维护即可。

    下载并安装Docker-Compose

    下载并Docker-Compose

    去github官网搜多docker-compose,下载1.24.1版本的Docker-Compose

    github地址:https://github.com/docker/compose
    下载路径:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64

    建议安装方式

    # 直接联网下载到本地 /usr/local/bin/docker-compose
    
    curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    

    进入这个目录,给这个文件夹权限

    chmod 777 docker-compose
    

    测试

    任意目录输入:

    docker-compose
    

    Docker-Compose管理MySQL和Tomcat容器

    yml文件以key:value方式来指定配置信息
    多个配置信息以换行+锁紧的方式来区分
    在docker-compose.yml文件中,不要使用制表符

    version: '3.1'
    services:
      mysql:        # 服务的名称
        restart: always     # 代表只要docker启动,那么这个容器就跟着一起启动
        image: daocloud.io/library/mysql:5.7.4      # 指定镜像路径
        container_name: mysql       # 指定容器名称
        ports:
          - 3306:3306       #指定端口号的映射
        environment:
          MYSQL_ROOT_PASSWORD: root     # 指定MySQL的ROOT用户登录密码
          TZ: Asia/Shanghai     # 指定时区
        volumes:
          - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql      # 映射数据卷
      tomcat:
        restart: always
        image: daocloud.io/library/tomcat:8.5.15-jre8
        container_name: tomcat
        ports:
          - 8080:8080
        environment:
          TZ: Asia/Shanghai
        volumes:
          - /opt/docker_mysql_tomcat/tomcat_webapps:/var/local/tomcat/webapps
          - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs
    

    使用docker-compose命令管理容器

    在使用docker-compose的命令时,默认会在当前目录下找docker-compose.yml文件

    # 1. 基于docker-compose.yml启动管理的容器
    docker-compose up -d
    
    # 2. 关闭并删除容器
    docker-compose down
    
    # 3. 开启|关闭|重启已经存在的有docker-compose维护的容器
    docker-compose start|stop|restart
    
    # 4. 查看由docker-compose管理的容器
    docker-compose ps
    
    # 5. 查看日志
    docker-compose logs -f
    

    创建docker-compose.yam文件和要映射的文件夹



    启动容器



    看到启动成功

    docker-compose配合Dockerfile使用

    使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器

    docker-compose文件

    编写docker-compose.yml文件

    #yml文件
    version: '3.1'
    services:
      ssm:
        restart: always
        build:      # 构建自定义镜像
          context: ../      # 指定dockerfile文件的所在路径
          dockerfile: Dockerfile        # 指定Dockerfile文件名称
        image: ssm:1.0.1
        container_name: ssm
        ports:
          - 8082:8080
        environment:
          TZ: Asia/Shanghai
    

    Dockerfile文件

    编写Dockerfile文件

    from daocloud.io/library/tomcat:8.5.15-jre8
    #copy ssm.war /usr/local/tomcat/webapps
    

    镜像的操作

    拉取镜像

    从好枞阳仓库拉取镜像到本地

    docker pull 镜像名称[:tag]
    
    # 举个例子
    docker pull daocloud.io/library/tomcat:8.5.15-jre8
    

    删除本地镜像

    需要先删除对应的容器,才能删除镜像

    docker rmi 镜像id
    
    #例如
    docker rmi 9c7a54a9a43c
    

    镜像的导入导出

    如果因为网络原因可以通过硬盘的方式传输镜像,虽然不贵放,但是有效,但是这种方式导出的镜像名称和版本都是null,需要手动修改

    # 将本地的镜像导出
    docker save -o 导出的路径 镜像id
    # 例如
    docker save -o /usr/local/tmp/mytomcat8 b8dfe9ade316
    
    # 加载本地的镜像文件
    docker load -i 镜像文件
    # 例如
    docker load -i mytomcat8
    
    # 修改镜像名称
    docker tag 镜像id 新的镜像名称:版本
    # 例如
    docker tag b8dfe9ade316 mytomcat:1.0
    

    加载本地镜像


    修改镜像名称


    使用本地导入的镜像运行一个容器

    docker run -d -p 8080:8080 --name tomcat8 b8dfe9ade316
    

    容器操作

    运行容器

    运行容器需要指定具体镜像,如果镜像不存在,会直接下载

    # 简单操作
    dorker run 镜像的标识|镜像名称[:tag]
    
    # 常用的参数
    docker run -d -p 宿主机端口:容器端口 --name 容器标识 镜像的标识|镜像名称[:tag]
    # -d:代表后台运行容器
    # -p:宿主机端口:容器端口;为了映射当前Linux的段都和容器的端口
    # --name:容器名称,指定容器的名称
    
    # 例如
    docker run -d -p 8080:8080 --name tomcat8 b8dfe9ade316 
    

    镜像标识直接复制docker images看到的列表


    成功访问

    查看当前运行的容器

    docker ps
    
    # 查看所有容器
    docker ps -a
    

    查看容器日志

    docker logs -f 容器id
    # -f:可以滚动查看日志的最后几行
    

    进入容器内部

    可以进入容器内部进行操作

    docker exec -it 容器id bash
    
    # 例如
    docker exec -it a927e08235da bash
    

    查看里面的目录,说明一个容器就是一个独立的Linux系统

    退出容器

    快捷键

    control+p+q
    

    复制内容到容器

    将宿主机的文件复制到容器内部的指定目录

    docker cp 文件名称 容器id:容器内部路径
    

    将容器内部的文件复制到宿主机

    docker cp 容器id:容器目录 宿主机目录
    

    尝试修改容器内部文件,在容器内部还不能用vi编辑文件,讲起拷贝到宿主机,修改完,再拷贝回去

    启动容器

    docker start 容器id
    
    # 重启容器
    docker restart 容器id
    

    停止容器

    docker stop 容器id
    
    # 停止所有容器
    docker stop $(docker ps -qa)
    

    删除容器

    docker rm 容器id
    
    # 例如
    docker rm ed8fe073fe33
    
    # 删除全部容器
    docker rm $(docker ps -qa)
    

    提交运行时容器成为镜像

    docker commit -a='作者' -m='备注' 运行时容器ID 新镜像名称
    
    # 例如
    docker commit -a='zsx' -m='test' 85650af9f9ac tomcat8new
    

    查看容器元信息

    docker inspect 容器id
    

    设置容器自动启动

    docker update --restart=always 容器id
    
    # 例如
    docker update --restart=always 85650af9f9ac
    

    Docker应用

    Docker安装Tomcat

    docker run -d -p 8080:8080 --name tomcat8088 daocloud.io/library/tomcat:8.5.15-jre8
    

    Docker安装MySQL

    docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 daocloud.io/library/mysql:5.7.4
    

    容器卷

    为了部署SSM的工程,需要使用到cp的命令将宿主机内的ssm.war文件复制到容器内部
    数据卷:将宿主机的一个目录映射到容器的一个目录中。
    可以在宿主机中操作目录中的内容,那么容器内部的文件,也会跟着一起改变

    创建数据卷

    创建数据卷之后,默认会存放在一个目录下/var/lib/docker/volumes/数据卷名称/_data

    docker volume create 数据卷名称
    

    查看数据卷详情

    查看数据卷的详细信息,可以查询到存放路径,创建时间等等

    docker volume inspect 数据卷名称
    

    查看全部数据卷

    docker volume ls
    

    删除数据卷

    docker volume rm 数据卷名称
    

    容器映射数据卷

    映射有两种方式:

    • 通过数据卷名称映射,如果数据卷不存在,Docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中
    • 通过路径映射数据卷,直接指定一个路径作为数据卷的存放位置,但是这个路径下是空的
    # 通过数据卷名称映射
    docker run -v 数据卷名称:容器内部的路径 镜像id
    
    # 通过路径映射数据卷
    docker run -v 路径:容器内部的路径 惊喜那个id
    

    Dockerfile自定义镜像

    我们可以从中央仓库下载一个镜像,也可以自己手动制作一个镜像,需要通过Dockerfile去指定自定义镜像的信息

    Dockerfile

    创建自定义镜像就需要创建一个Dockerfile,如下为Dockerfile的语言
    Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于操作系统(centos或者Ubuntu)基础镜像并最终创建一个新镜像;
    我们前面讲过的用手动的方式,修改配置文件,或者添加、删除文件目录的方式,来构建一种新镜像;这种手工方式麻烦,容易出错,而且不能复用;
    我们这里将Dockerfile,用脚本方式来构建自动化,可复用的,高效率的创建镜像方式,是企业级开发的首选方式
    在软件系统开发生命周期中,采用Dockerfile来构建镜像:

    1. 对于开发人员:可以为开发团队提供一个完全一致的开发环境;
    2. 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作;
    3. 对于运维人员:在部署时,可以实现应用的无缝移植。
    from: 指定当前自定义镜像依赖的环境  指定基础镜像  一切丑姑娘这里开始构建
    copy: 将相对路径下的内容复制到自定义镜像中
    workdir: 生命镜像的默认工作目录
    run: 执行的命令,可以编写多个
    cmd: 需要执行的明林(在workdir下执行的,cmd可以写多个,只以最后一个为准)
    
    # 举个例子,制作SSM容器镜像,而且ssm.war要放在Dockerfile的同级目录下
    from daocloud.io/library/tomcat:8.5.15=jre8
    copy ssm.war /usr/local/tomcat/webapps
    

    通过Dockerfile制作镜像

    编写完Dockerfile后需要通过命令将其只作为镜像,并且要在Dockerfile的当前目录下,之后即可在镜像中查看到指定的镜像信息,注意最后的 .

    docker build -t 镜像名称[:tag]
    

    @欧币杰昔

    相关文章

      网友评论

          本文标题:Docker的安装

          本文链接:https://www.haomeiwen.com/subject/sorgzdtx.html