Docker 1.安装与基本命令

103 阅读2分钟

安装

Centos

只展示在Centos系统下的安装,其他的可以参考官方网站上的教程。注意:要替换源,否则会很慢,甚至安装不了。

docker安装:docs.docker.com/engine/inst…

docker-compose安装:docs.docker.com/compose/ins…

Centos7安装docker和docker-compose步骤:

注意:rpm安装和package安装选择一个即可。

  1. 卸载旧版本(如果是新服务器不需要执行这步)

    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
    
  2. 使用rpm安装

    # 1. 设置存储库
    yum install -y yum-utils
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum makecache fast
    
    ####################注意:2和3只用执行一个即可####################
    
    # 2. 安装新版docker
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    # 3. 安装特定版本的docker
    yum list docker-ce --showduplicates | sort -r
    sudo yum install -y docker-ce-<V> docker-ce-cli-<V> containerd.io docker-buildx-plugin docker-compose-plugin
    
  3. 使用package安装

    # 打开网站 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
    
    # 下载所需要的rpm文件: containerd.io-1.6.9-3.1.el7.x86_64.rpm, docker-buildx-plugin-0.11.2-1.el7.x86_64.rpm, docker-ce-24.0.7-1.el7.x86_64.rpm, docker-ce-cli-24.0.7-1.el7.x86_64.rpm, docker-compose-plugin-2.6.0-3.el7.x86_64.rpm
    
    # 版本可以选择不同的,也可以按照上面给的。上传服务器某个文件夹下,比如: /opt/module,如果没有该文件夹,可以使用mkdir创建
    cd /opt/module
    yum install *.rpm
    
  4. 启动docker

    systemctl start docker
    # 设置开机启动
     systemctl enable docker
    
  5. 测试

    docker run hello-world 或者 docker version
    
  6. 安装docker-compose

    curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
    
    
    # 如果比较慢的话,可以打开 https://github.com/docker/compose/releases 下载 docker-compose-linux-x86_64
    
    # 上传服务器 /usr/local/bin 目录下, 
    
    # 更改文件名: mv docker-compose-linux-x86_64 docker-compose 变为可执行文件: chmod +x /usr/local/bin/docker-compose
    
    # 测试
    docker-compose -v
    
  7. 配置阿里云镜像加速

    # 登录自己的阿里云账号,打开网站: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["自己的加速器地址"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

镜像

Docker运行容器之前需要本地存在对应的镜像,如果镜像不存在,会先尝试从默认镜像仓库下载(docker hub仓库),可以通过配置,使用自定义的镜像仓库。参考安装的第七步

所有命令都可以使用: docker xx --help 查找帮助手册

  1. 获取镜像,如果不指定TAG,默认选择latest标签

    docker pull NAME[:TAG]
    
  2. 查看镜像信息

    images

    # 列出所有镜像
    docker images
    # 获取匹配的镜像名:版本, service 为将要被匹配的镜像名
    docker images|grep service|awk '{print $1":"$2}'
    

    tag

    # 为本地镜像添加任意的tag
    docker tag NAME:TAG NEW_NAME:NEW_TAG
    

    inspect

    # 获取镜像的详细信息
    docker inspect NAME:TAG
    # 获取其中一项
    docker inspect -f {{".Config.Cmd"}} NAME:TAG
    

    history

    # 获取镜像的创建信息
    docker history NAME:TAG
    # 输出完整的命令
    docker history --no-trunc NAME:TAG
    
  3. 搜索镜像

    docker search NAME
    
  4. 删除和清理镜像

    删除

    # 删除镜像
    docker rmi NAME:TAG
    # 强制删除镜像
    docker rmi -f NAME:TAG
    

    清理

    docker image prune
    
  5. 创建镜像

    基于已有镜像的容器创建

    # CONTAINER_ID 可以通过 docker ps 获取
    docker commit CONTAINER_ID NAME:TAG
    

    基于本地模板的导入

    # 将一个容器导出为tar包
    docker export CONTAINER_ID > xx.tar.gz
    docker import - NAME:TAG < xx.tar.gz
    

    基于Dockerfile创建

    docker build -t NAME:TAG .
    
  6. 存出和载入镜像

    # 存出镜像
    docker save -o xx.tar.gz NAME:TAG
    # 载入镜像
    docker load -i xx.tar.gz
    
  7. 上传镜像

    注意:dockergjy可以替换为你自己的docker hub的名称,否则会失败

    # 首先登录,输入用户名和密码
    docker login
    # 给源镜像打标签
    docker tag NAME:TAG dockergjy/NAME:TAG
    # 上传镜像
    docker push dockergjy/NAME:TAG
    

容器

容器是镜像的一个运行实例。本部分介绍:创建、启动、终止、进入、删除、导入、导出操作。

  1. 创建容器

    docker create NAME:TAG # 创建容器
    docker start NAME:TAG # 启动容器
    docker run NAME:TAG # 创建并启动容器
    docker logs -f CONTAINER_ID # 追踪容器的日志
    

    当镜像不存在时,会自动下载带有latest版本的镜像。

    常用的相关参数

    选项描述
    -d在后台运行
    -p映射端口。hostPort:containerPort
    --restart='no'重启策略。no、always、on-failure
    --rm=true容器退出时是否自动删除。不能和 -d同时使用。true、false
    -v挂在主机的文件卷到容器内。主机路径:容器路径
    --name=''指定名称。
    -it交互时启动
  2. 停止容器

    docker pause CONTAINER_ID # 暂停一个运行的容器
    docker unpause CONTAINER_ID # 恢复一个暂停的容器
    docker stop CONTAINER_ID # 停止一个容器
    docker container prune # 清理所有处于停止状态的容器
    docker restart CONTAINER_ID # 将一个容器先停止在启动。
    
  3. 进入容器

    docker exec -it CONTAINER_ID /bin/bash
    
  4. 删除容器

    docker rm CONTAINER_ID
    docker rm -f CONTAINER_ID # 强制删除一个正在运行的容器
    docker rm -f $(docker ps -aq) # 删除所有容器
    docker rm -f $(docker ps -a | grep service | awk '{print $1}') # 强制删除名为service的容器
    
  5. 导入导出容器

    docker export CONTAINER_ID > xx.tar.gz
    docker import - NAME:TAG < xx.tar.gz
    
  6. 查看容器

    容器详情

    docker container inspect CONTAINER_ID
    docker container inspect -f {{'.State.Status'}} CONTAINER_ID # 查看某一项
    

    容器内进程

    docker top CONTAINER_ID
    

    统计信息

    # 会显示CPU、内存、存储、网络等使用情况的统计信息
    docker stats CONTAINER_ID
    
  7. 其他命令

    复制文件

    docker cp a.txt CONTAINER_ID:/data # 将系统文件复制到容器内部
    docker cp CONTAINER_ID:/data/a.txt /root/ # 将容器文件复制到系统内
    

    查看变更

    docker diff CONTAINER_ID
    

    查看端口映射

    docker port CONTAINER_ID