当前位置: 首页 > article >正文

Docker安装以及简单使用

1.yum和docker的安装和换源:

yum安装及换源参考如下帖子:

centos7安装yum工具(非网易云镜像)-CSDN博客

docker安装以及换源

1.首先删除旧的docker:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine \
    docker-selinux 

2.执行命令安装docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

4.配置镜像加速

# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirrors.tuna.tsinghua.edu.cn",
        "http://mirrors.sohu.com",
        "https://ustc-edu-cn.mirror.aliyuncs.com",
        "https://ccr.ccs.tencentyun.com",
        "https://docker.m.daocloud.io",
        "https://docker.awsl9527.cn"
    ]
}
EOF

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker

2.docker基础

1.docker常用命令

命令

说明

文档地址

docker pull

拉取镜像

docker pull

docker push

推送镜像到DockerRegistry

docker push

docker images

查看本地镜像

docker images

docker rmi

删除本地镜像

docker rmi

docker run

创建并运行容器(不能重复创建)

docker run

docker stop

停止指定容器

docker stop

docker start

启动指定容器

docker start

docker restart

重新启动容器

docker restart

docker rm

删除指定容器

docs.docker.com

docker ps

查看容器

docker ps

docker logs

查看容器运行日志

docker logs

docker exec

进入容器

docker exec

docker save

保存镜像到本地压缩文件

docker save

docker load

加载本地压缩文件到镜像

docker load

docker inspect

查看容器详细信息

docker inspect

用一副图来表示这些命令的关系:

docker run详细解读:

某些命令过于复杂,也可以给命令起别名,来简化命令。

2.数据卷

1.数据卷挂载

数据卷是一个虚拟目录,它将宿主机目录映射到容器内目录,方便我们操作容器内文件,或者方便迁移容器产生的数据。

ps:注意的是数据卷的位置是docker自动生成的,无需本人操作。缺点是目录较深,不便于操作。

常用命令如下:

也可以在创建容器时挂载数据卷:

        在执行docker run命令时,使用 -v 数据卷:容器内目录 可以完成数据卷挂载

        当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建数据卷

2.目录挂载

在执行docker run命令时,使用 -v 本地目录 : 容器内目录 可以完成本地目录挂载

本地目录必须以“/”或 "./" 开头,如果直接以名称开头,会被识别为数据卷而非本地目录

        -v mysql : /var/lib/mysql 会被识别为一个数据卷叫mysql

        -v ./mysql : /var/lib/mysql 会被识别为当前目录下的mysql目录

3.数据卷挂载和目录挂载的区别

数据卷由系统自动生成,较方便。但是生成目录较深,当容器生成匿名卷时数据不好迁移。

目录挂载中目录由自己生成,方便查找。缺点是目录需要自己提前生成。

3.自定义镜像

镜像:

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。

构建一个Java镜像的步骤:

        ①准备一个Linux运行环境

        ②安装JRE并配置环境变量

        ③拷贝Jar

        ④编写运行脚本

镜像是分层构建的,镜像的结构如图:

Dockerfile:

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction)用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。常见指令如下:

更新详细语法说明,请参考官网文档: Dockerfile reference | Docker Docs

Dockerfile实例说明:

1.我们可以基于Ubuntu基础镜像,利用Dockerfile描述镜像结构

2.也可以直接基于JDK为基础镜像,省略前面的步骤:

当编写好了dockerfile后执行以下命令构建镜像:

docker build -t 镜像名 Dockerfile目录

实例:

docker build -t myimage:1.0 .

        -t:是给镜像起名,格式依然是repository:tag的格式,不指定tag时,默认为latest

        . :是指定Dockerfile所在目录,如果就在当前目录,则指定为"."

4.自定义网络

问题:两个容器创建后要求互连,在同一网桥中可以连接,但是当某一服务关闭后ip地址可能被另一个容器占用,因此需要自定义网络让容器通过名字的方式在同一网桥中互连。

加入自定义网络的容器才可以通过容器名互相访问(默认的不行),Docker的网络操作命令如下:

DockerCompose

问题:将每一个服务都去部署到服务器,太繁琐。

Docker Compose通过一个单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。

docker compose的命令格式如下:

docker compose [OPTIONS] [COMMAND]

实例展示:

单个部署:

多个部署:

version: "3.8"

services:
  mysql:
    image: mysql
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "./mysql/conf:/etc/mysql/conf.d"
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/init:/docker-entrypoint-initdb.d"
    networks:
      - hm-net
  hmall:
    build:
       context: .
       dockerfile: Dockerfile
    container_name: hmall
    ports:
      - "8080:8080"
    networks:
      - hm-net
    depends_on:
      - mysql
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - "18080:18080"
      - "18081:18081"
    volumes:
      - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
      - "./nginx/html:/usr/share/nginx/html"
    depends_on:
      - hmall
    networks:
      - hm-net
networks:
  hm-net:
    name: hmall


http://www.kler.cn/news/311897.html

相关文章:

  • 在线安全干货|如何更改IP地址?
  • 基于单片机的风机故障检测装置的设计与实现(论文+源码)
  • 批量处理docker容器以及镜像的脚本
  • 一、Numpy使用
  • C语言从头学61——学习头文件signal.h
  • 什么是“云原生”
  • Mysql梳理6——order by排序
  • 在 VS Code 中调试 C++ 项目
  • 【数据结构】动态开点线段树
  • 基于Android Studio 蜜雪冰城(奶茶饮品点餐)—原创
  • Java ERP系统源码深度解析:Spring Cloud Alibaba和Spring Boot的微服务实战
  • 云WAF能做什么?看它如何帮你应对网络攻击
  • 武汉网站建设实施方案
  • 猫咪为什么不吃猫罐头?解决挑食小猫!美味主食罐推荐!
  • 2.4 数据库表字段约束
  • 水经微图PC版5.0.0即将内测
  • MATLAB数学规划:2.线性规划
  • 分享一个 在线拍卖系统 商品竞拍平台Java、python、php三个技术版本(源码、调试、LW、开题、PPT)
  • MATLAB系列03:分支语句和编程设计
  • 指挥中心操作台怎么布局更合理
  • Can‘t connect to local MySQL server through socket
  • 【线性规划求解系列】MATLAB中使用linprog解决线性规划问题
  • 【学术会议:中国杭州,机器学习和计算机应用面临的新的挑战问题和研究方向】第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)
  • 大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解
  • Linux 环境永久更换国内pip镜像源地址
  • 【MySQL】表的相关操作
  • 你敢相信吗,我用AI撸了一个在线计算器网站!
  • ElasticSearch7整合es-head,ES配置密码
  • 微软 Azure AI 服务免费试用及申请:语音识别、文本转语音、基于视觉、语言处理、文档分析等10大场景
  • ReentrantLock实现原理