Docker

安装Docker

安装

  • 使用Linux的Root用户操作

    • 如果没有root用户,或者用普通用户操作,需要使用 sudo 命令授权

  • 卸载旧的Docker版本

yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine
  • 安装Docker所需依赖包

yum install -y yum-utils \
               device-mapper-persistent-data \
               lvm2
  • 设置下载镜像的国内的源地址

    • 由于Docker下载镜像的地址是国外的服务器,需要替换为国内的阿里云或清华大学提供的源地址

    • 下载速度会快一些,稳定一些

# 阿里云源地址
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
​
# 二选一即可
​
# 清华大学源地址
yum-config-manager \
    --add-repo \
    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  • 安装Docker

# 安装Docker的最新版本
yum install docker-ce docker-ce-cli containerd.io
​
# 安装Docker指定的版本
# 查询Docker的版本信息
yum list docker-ce --showduplicates | sort -r
# 根据查询出的Docker版本信息,指定版本安装
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

启动Docker

systemctl start docker

关闭Docker

systemctl stop docker

Hello World

  • 下载一个镜像

  • 运行这个容器

  • 输出一段字符串 Hello World

  • docker run ubuntu:15.10 /bin/echo "Hello World"
    • docker run 代表运行一个容器

    • ubuntu:15.10 容器的镜像

      • 如果当前镜像没有,则会先下载这个镜像,然后再运行容器

    • /bin/echo"Hello World" 在控制台输出 Hello World 内容

Docker镜像

  • 官网地址

    • https://registry.hub.docker.com/

    • 可以在官网中搜索相关的镜像,查看对应的版本和描述信息

      • 描述信息中可以看到如何使用当前的镜像

      • 版本的内容是当前镜像的版本号,默认是最新的版本 latest

  • 搜索镜像

    • docker search 镜像名称
    • 通过命令在命令行中进行查找镜像内容

      • NAME 镜像名称

      • DESCRIPTION 镜像描述

      • STARS 点赞数

      • OFFICIAL 是否官方

      • AUTOMATED 是否开源

  • 下载镜像

    • # 下载最新版本的镜像
      docker pull 镜像名称
      # 指定下载版本号的镜像
      docker pull 镜像名称:版本号
  • 查看本地镜像

    • docker images
    • 查看本地已经下载好的Docker镜像

      • REPOSITORY

        • 仓库的镜像名称

      • TAG

        • 镜像版本号

      • IMAGE ID

        • 镜像唯一标识

      • CREATED

        • 镜像创建的时间

      • SIZE

        • 镜像文件大小

  • 删除镜像

    • docker rmi 镜像ID
    • 删除镜像时,必须停止容器,而且需要将容器删除

      • 就算容器没有在运行,只要它存在就无法删除镜像

Docker容器

  • 查看当前正在运行的容器

    • docker ps
      • 正在运行的容器可以查看到

  • 查看所有容器

    • docker ps -a
      • 所有的容器包括运行中的和停止的容器,都可以查看到

      • CONTAINER ID

        • 容器的唯一标识

      • IMAGE

        • 容器加载镜像

      • COMMAND

        • 执行的命令

      • CREATED

        • 创建容器的时间

      • STATUS

        • 容器运行的状态

          • 运行的时间

          • 已经停止的时间

      • PORTS

        • 宿主机和容器关联的端口号

      • NAMES

        • 容器名称

  • 删除容器

    • docker rm 容器ID
      • 根据容器ID删除容器

      • 因为一个镜像可以运行多个容器,但是容器的名字不能重复,容器ID不能重复

  • 创建容器

    • #语法
      docker run -it --name=容器名称 镜像名称:版本号 /bin/bash
      # 指定redis最新版本的镜像创建容器
      # 创建并运行容器,以交互式的方式运行,然后进行容器内部
      docker run -it --name=myRedis redis:latest /bin/bash
      
      # 指定redis最新版本的镜像创建容器
      # 创建并运行容器,以守护式的方式运行,后台运行,不进入容器内部
      docker run -id --name=myRedis redis:latest
      
      # 容器内部,没有vi/vim等命令,想要安装,首先要保证宿主机是可以联网
      # 进入容器内部执行命令
      apt update
      apt install -y vim
      
      # 容器内部想要退出到宿主机
      # 以交互式的方式运行时,创建容器后会进入容器内部,此时执行退出操作,会关闭掉容器
      # 以守护式的方式运行时,创建容器后不会进入容器内部,需要手动的进入容器内部,进入容器后,此时执行退出操作,则不会关闭掉容器
      exit
      
      # 创建一个Redis的容器,并进行端口的映射
      # -p 宿主机端口:容器端口
      docker run -id --name aliyunRedis -p 1111:6379 redis:latest
      
      # 创建一个Mysql的容器,端口映射和目录挂载
      # -v 宿主机目录:容器目录
      docker run -id --name aliyunMysql -p 2222:3306 -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7.36
      
    • docker run

      • 运行容器

    • --name=myRedis

      • 容器的名称

    • -i

      • 交互式运行

    • -t

      • 开启终端

    • -d

      • 守护式运行,后台运行

    • -it

      • 创建容器,并通过终端执行,进入容器内部

        • 如果你有想要操作容器内部的方式,可以进入容器内部进行执行一些操作

        • 进入到容器内部,不会运行容器的组件,需要手动进行操作

          • 比如Redis进入执行 redis-server & 进行后台运行

    • -id

      • 创建容器,后台运行

        • 以守护式的方式运行容器,组件会被运行

    • -itd

      • 创建容器,并通过终端执行,进入容器内部,和 -it 一样的意思

    • -p

      • 端口映射,将宿主机的端口映射到容器的端口,进行绑定

      • 然后操作宿主机的端口就相当于操作容器的端口

    • -v

      • 目录挂载,将宿主机的目录和容器目录进行绑定

      • 这样做的目的就是将容器中存放的一些数据,可以同步到宿主机上

      • 这样防止容器数据丢失

      • 即使容器出现问题,删除了之后,将目录重新进行挂载,马上即可恢复原来的数据

    • 细节

      • 如果当前使用的容器不知道怎样使用,可以看官网提供的描述信息

        • 上面有很多详细的参数的介绍

使用Docker安装FastDFS

  • 下载镜像

    • docker pull season/fastdfs

  • 创建 tracker 容器

    • docker run -ti -d --name trakcer -v ~/tracker_data:/fastdfs/tracker/data --net=host season/fastdfs tracker 
  • 创建 storage 容器

    • docker run -ti --name storage -v ~/storage_data:/fastdfs/storage/data -v ~/store_path:/fastdfs/store_path --net=host -e TRACKER_SERVER:宿主机ip:22122 season/fastdfs storage
  • 查看容器ID,修改 storage 容器的配置文件,启动

    • 将storage.conf配置文件复制到宿主机中

      • # 查看运行的容器ID
        docker ps
        
        # 语法: docker cp 代表复制的意思
        # 用法1: docker cp 容器ID:容器中的文件 保存的宿主机的目录(.代表当前目录)
        # 用法2: docker cp 宿主机文件 容器ID:容器中路径
        # 将宿主机的文件复制到容器中的路径中,如果有相同文件,则直接覆盖
        docker cp 容器ID:/etc/fdfs/storage.conf .
      • 修改storage.conf配置文件

        • 修改tracker路径,修改为自己的ip地址(Linux虚拟机)

      • 将修改后的storage.conf配置文件覆盖到容器中

        • docker cp storage.conf 容器ID:/etc/fdfs/
      • 重新启动storage

        • 进入容器内部,通过命令重新启动

        • docker exec -it 容器ID /bin/bash
        • 容器内部通过fdfs_storaged /etc/fdfs/storage.conf start

      • 通过代码进行远程测试了

      • 通过宿主机的本地目录挂载查看是否上传成功

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值