Docker 基础

安装

  1. 卸载老版本(如果有)

    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    
  2. 安装 yum-utils 工具

    yum install -y yum-utils
    
  3. 配置 yum-utils 的 yum-config-manager 源,以下二选一

    # 阿里
    yum-config-manager \
        --add-repo \
        https://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
    
  4. 安装 docker

    # 没有指定版本就是安装最新版本
    yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    安装了 5 个软件,分别是:docker-ce、 docker-ce-cli、containerd.io、docker-buildx-plugin、docker-compose-plugin

    如果要指定版本安装,就把这些软件目前可下载的版本列出来看一下,然后再选择对应的版本安装

    # 看 docker-ce 版本
    yum list docker-ce --showduplicates | sort -r
    
    # 这是下载的,第二列从第一个 : 开始第一个 - 结束
    docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
    docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
    docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable
    

    上面的可用版本分别是:18.09.1、18.09.0、18.06.1.ce、18.06.0.ce

    # 指定版本安装
    yum install docker-ce-18.09.1 docker-ce-cli containerd.io
    
  5. dockerhub 被和谐了,替换镜像源,依次执行下面4条命令

    mkdir -p /etc/docker
    
    
    tee /etc/docker/daemon.json <<EOF
    {
        "registry-mirrors": [
            "https://hub.uuuadc.top",
            "https://docker.anyhub.us.kg",
            "https://dockerhub.jobcher.com",
            "https://dockerhub.icu",
            "https://docker.ckyl.me",
            "https://docker.awsl9527.cn"
        ]
    }
    EOF
    
    systemctl daemon-reload
    
    systemctl restart docker
    

常用命令

系统级别

  1. systemctl start docker 启动 docker
  2. systemctl enable docker 开机启动 docker
  3. systemctl restart docker 重启 docker

镜像

  1. docker search nginx 搜索镜像。OFFICAL:是否是官方发布的镜像,OK 表示是,为空就不是
  2. docker pull nginx 拉取镜像
    1. 不加版本就是拉取最新的
    2. 如果要指定版本,docker search 就不合适了,去 docker hub 去找
    3. docker pull nginx:1.26.0 拉取指定版本镜像,这个命令 docker hub 也有
  3. docker images 已存在的镜像。这是简写,全写是 docker image ls
  4. docker rmi 删除镜像。可以跟【镜像名:版本】或【镜像ID】

容器

  1. docker ps 当前运行中的容器

    1. 不带参数就是查看运行中的容器
    2. docker ps -a 查看所有容器,包括没运行的
    3. docker -ps -aq 查看所有容器,只显示容器id
  2. docker run 镜像id或镜像名称 运行容器。为指定镜像运行一个容器

    1. docker run nginx 创建并启动一个 nginx 的容器,如果不跟版本号就是 latest,如果当前没有这个镜像还会先拉取再运行

    2. docker run nginx:1.26.0 创建并启动一个 nginx 的容器,版本是 1.26.0

    3. run 还能带一些参数,比如后台启动、自定义名称、端口映射、目录挂载等

      # -d 后台启动
      # --name 自定义容器名称
      # -p 端口映射(8080:80 表示宿主机 8080 映射到 容器 80)
      # -v 目录挂载(后面说)
      docker run -d --name mynginx -p 8080:80 nginx
      
  3. docker stop 容器id或容器名称 停止容器

  4. docker start 容器id或容器名称 启动容器。docker restart xxx 重启容器,不管是否运行都重启

  5. docker logs 容器id或容器名称 查看容器日志

  6. docker stats 容器id或容器名称 查看容器运行状态。可以看网络、CPU、内存等资源使用情况

  7. docker exec -it 容器id或容器名称 bash 进入容器

  8. docker ps rm 容器id或容器名称 删除容器。要先停止才能删除,运行中的要强制删除 docker ps rm -f 容器id

目录挂载

  1. 容器被删除,里面的数据就没了
  2. 因为容器为了最小化资源使用,里面很多命令都没有,所以修改数据不方便

运行容器的时候指定参数 -v 完成目录的挂载,同 -p 一只,也是先先宿主机目录在写容器目录,比如下面的命令:

docker run -d -v /app/nginx/html:/usr/share/nginx/html -p 8080:80 nginx
  1. nginx 的欢迎页(首页)是 /usr/share/nginx/html/index.html,上面的命令会让 nginx 到宿主机的 /app/nginx/html 下找 index.html
  2. 如果宿主机没有挂载的目录会自动创建(但是不会创建文件)

卷挂载

目录挂载会自动创建目录,但是不会创建文件,卷挂载就是用来解决这个问题的

# 运行一个容器,使用卷挂载
docker run -d -v nghtml:/usr/share/nginx/html -p 8090:80 nginx
  1. nghtml 是卷名,自定义的,随便取什么名都行
  2. 冒号后面是容器目录

nghtml 位置在哪?docker 用宿主机的专门一个位置存放所有卷挂载的文件: /var/lib/docker/volumes

  1. docker volume ls 查看所有的卷
  2. docker volume inspect 卷名 查看卷的详情,Mountpoint 就是这个卷的位置
posted @ 2024-08-15 17:21  CyrusHuang  阅读(2)  评论(0编辑  收藏  举报