Docker安装与常用操作

CentOS安装Docker

  1. 卸载旧版本docker
    sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  2. 设置docker资源库(yum工具包yum-utils中包含yum-config-manager):
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    如果出现网络错误"Could not fetch/save url …",可以使用阿里云的源
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum仓库管理yum-config-manager
  3. 安装docker: sudo yum install docker-ce
  4. 启动docker: sudo systemctl start docker
  5. 运行docker容器验证是否安装成功: sudo docker run hello-world
  6. 更多操作系统可参考官方文档

docker国内镜像

docker的存储目录迁移

  1. 停止docker服务:
    systemctl stop docker
  2. 创建新的docker目录,执行命令df -h,找一个大的磁盘:
    mkdir -p /home/lib/docker
  3. 迁移 /var/lib/docker 目录下面的文件到 /home/lib/docker:
    cp -r /var/lib/docker /home/lib/docker
  4. 编辑daemon.json文件(若没有该文件新建一个即可), 添加data-root配置
    vim /etc/docker/daemon.json
    {
        "data-root": "/home/lib/docker",
        "registry-mirrors": [
          "https://registry.docker-cn.com",
          "https://registry.hub.docker.com"   
        ],
        "log-driver":"json-file",
        "log-opts": {"max-size":"500m", "max-file":"3"}
    }
  1. 重启docker:
    systemctl start docker.
  2. 通过docker info命令查看 Docker Root Dir 是否已更改,检查原有容器是否已正常启动.
    docker info
    docker ps -a
  3. 确定容器没问题后删除/var/lib/docker/目录.

docker-compose安装

  • 插件式安装: sudo yum install docker-compose-plugin

实际上 docker-compose-plugin 作为 docker-ce 的依赖一起安装了

  • 查询是否安装成功: docker compose version

容器日志管理

  1. 查看docker某个容器日志: docker logs -f 容器名称
    在 Docker 引擎 20.10 之前,docker logs 命令只能与使用localjson-filejournald日志驱动的容器一起使用。点击查看官方说明
    如下日志驱动是syslog、centos7系统,日志在/var/log/messages
nginx: 
  image: nginx:stable-alpine
  restart: always 
  logging:
    driver: syslog
    options: { tag: yourtag }
  1. 设置单个容器日志大小
    支持设置max-file的日志驱动有:local、json-file
nginx: 
  image: nginx:stable-alpine
  restart: always 
  logging: 
    driver: "json-file"
    options: 
      max-size: "5g"
      max-file: "3"
  1. 全局配置容器日志大小
    /etc/docker/daemon.json添加log-dirverlog-opts参数。
    重启docker服务后生效systemctl restart docker,且仅对新建的容器有效
{
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"}
}
  1. 清理容器日志
    如下脚本会清空所有容器日志,腾出磁盘空间,如有重要日志需要先进行备份。
#!/bin/sh
for container in $(docker ps -q); do
  echo "Cleaning logs for container: $container"
  logs=$(docker inspect --format='{{.LogPath}}' $container)
  if [ -f $logs ]; then
      ls -lh $logs
      cat /dev/null > $logs
  fi
done

docker常用命令

  • 登录镜像仓库
    echo $Secret | docker login -u $Username $ServerURL --password-stdin
    $SERVER 为仓库地址,比如:https://index.docker.io/v1/
  • 标记本地镜像,将其归入某一仓库
    docker tag alpine:3.18.0 swr.cn-south-1.myhuaweicloud.com/namespace/alpine:3.18.0
  • 显示容器资源的使用情况
    docker stats
  • 查看容器中运行的进程信息,支持ps命令参数
    docker top 容器名,例如:
    docker top kafka-1 -o user,pid,ppid,pgid,etime,time,stat,comm
    题外话:在Alpine容器中,ps命令仅支持-o,-T选项,其中-o选项支持的参数user,group,comm,args,pid,ppid,pgid,etime,nice,rgroup,ruser,time,tty,vsz,sid,stat,rss
  • 清理没有使用的数据,包括镜像数据,已经停止的容器
    docker system prune
  • Docker整体磁盘使用率
    docker system df
  • Docker镜像导入导出

    export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出

    • save load
      导出:docker save -o nginx.tar nginx:latest
      导入:docker load -i nginx.tar
    • export import
      导出:docker export -o nginx-test.tar nginx-test
      导入:docker import nginx-test.tar nginx:imp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值