Docker

Docker

安装docker

在 CentOS 操作系统上安装 Docker 可以通过官方的 Docker 社区版(Docker CE)来实现。以下是在 CentOS 7 和 CentOS 8 上安装 Docker 的步骤:

在 CentOS 7 上安装 Docker

  1. 卸载旧版本的 Docker(如果已经安装):

    sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
    
  2. 安装所需的依赖包:

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 添加 Docker 的官方存储库:

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  4. 安装 Docker:

    sudo yum install docker-ce
    
  5. 启动 Docker 服务并设置开机启动:

    sudo systemctl start docker
    sudo systemctl enable docker
    
  6. 验证 Docker 是否安装成功:

    sudo docker --version
    

在 CentOS 8 上安装 Docker

  1. 安装所需的依赖包:

    sudo dnf install -y dnf-plugins-core
    
  2. 添加 Docker 的官方存储库:

    sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  3. 安装 Docker:

    sudo dnf install docker-ce
    
  4. 启动 Docker 服务并设置开机启动:

    sudo systemctl start docker
    sudo systemctl enable docker
    
  5. 验证 Docker 是否安装成功:

    sudo docker --version
    

以上步骤将安装 Docker 社区版(Docker CE)。安装完成后,你可以使用 Docker 命令来管理容器。请注意,安装 Docker 通常需要超级用户权限,所以确保你以管理员身份运行这些命令。

配置国内镜像加速

配置流程

编辑/etc/docker/daemon.json

vim /etc/docker/daemon.json

添加镜像代码(Docker中国官方镜像加速)

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

其他更多镜像地址

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://registry.docker-cn.com",
    "https://reg-mirror.qiniu.com",
    "https://dockerhub.azk8s.cn",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

重新加载daemon.json

sudo systemctl daemon-reload

重启Docker

sudo systemctl restart docker

使用docker安装部署应用

  1. 安装部署mysql

    1. 下载MySQL镜像

      docker search mysql:8.0
      
      NAME                                   DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
      lkhoho/mysql                           Thin wrapper of official mysql:8.0 image.        0
      benoit93260/mysql-server8.0.19         server mysql:8.0.19 CentOs7 mysql-shell:8.0.…   0
      bolinz/mysql                           mysql:8.0.26                                     0
      k2jeans/mysql                          mysql:8.0.32 VOLUME ~/data/mysql:/var/lib/my…   0
      phunkytube/mysql                       Like mysql:8.0.19 but turns OFF skip-name-re…   0
      kamatimaru/mysql80-ja                  Added Japanese support settings to mysql:8.0…   0
      c3p16l12/mysql                         Built with mysql:8.0.13.                         0
      lahouely/mysql8_utf8_native_password   A custom mysql image based on mysql:8.0 with…   0
      bogdan1980b/mysql                      mysql:8.0.19 with a default DB named database    0
      strongxyz/mysql                        gcr.io/ml-pipeline/mysql:8.0.26                  0
      jaykangta/maze-mysql                   based on mysql:8.0                               0
      horiasuciu/mysql                       mysql:8.0 - Version used by WorldPress Appli…   0
      candresortizm1/mysql-getting-started   Image based on mysql:8.0 official image          0
      flandycheng/gaoqi_mysql8                docker run --name gaoqi-mysql -e MYSQL_ROOT…   0
      jagenwen/mysql                         docker run -d -it -p 3306:3306 --name mysql …   0
      vkvich/zabbix-mysql                    mysql:8.0                                        0
      dockerbsm/phpmyadmin-mysql             phpmyadmin/phpmyadmin:5.1.1 & mysql:8.0.27       0
      
      docker pull bolinz/mysql
      
      8.0.26: Pulling from bolinz/mysql
      b380bbd43752: Pull complete
      f23cbf2ecc5d: Pull complete
      30cfc6c29c0a: Pull complete
      b38609286cbe: Pull complete
      8211d9e66cd6: Pull complete
      2313f9eeca4a: Pull complete
      7eb487d00da0: Pull complete
      a5d2b117a938: Pull complete
      1f6cb474cd1c: Pull complete
      896b3fd2ab07: Pull complete
      532e67ebb376: Pull complete
      233c7958b33f: Pull complete
      Digest: sha256:882e55f40d61034a2bb8a1abab1353571ad2a33866f382350788eb34740528b5
      Status: Downloaded newer image for bolinz/mysql:8.0.26
      docker.io/bolinz/mysql:8.0.26
      
      docker images
      
      REPOSITORY     TAG       IMAGE ID       CREATED       SIZE
      bolinz/mysql   8.0.26    9da615fced53   2 years ago   514MB
      
      
    2. 启动MySQL容器

      docker run -d --name mysql8 -p 3308:3306 --restart=always --privileged=true -e MYSQL_ROOT_PASSWORD='123456' bolinz/mysql:8.0.26
      
      -d 后台启动,-it:前端启动,送一个命令行界面
      --name:容器名,自定义
      -p :宿主端口:容器端口->映射端口,因为原端口容易被容器外的程序占用
      --restart=always : 伴随docker一起启动
      --privileged=true : 进入容器使用root权限
      -e 设置项:设置环境变量
      bolinz/mysql :镜像文件名,一般放到命令的最后,要和本地镜像仓库的名字一样,可以使用image id
      
      输出如下:
      5d2c5acbb658fec2df418d9b917846ec2e880684fb94b5ae85163ace65544766
      
    3. 检查容器运行状态

      docker ps -a
      #-a 显示所有状态的容器,缺省的话只显示运行中的容器
      CONTAINER ID   IMAGE                 COMMAND                   CREATED         STATUS         PORTS                                                  NAMES
      5d2c5acbb658   bolinz/mysql:8.0.26   "docker-entrypoint.s…"   8 seconds ago   Up 7 seconds   33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp   mysql8
      
      netstat -nptl|grep3308 # 检查端口运行状态
      tcp        0      0 0.0.0.0:3308            0.0.0.0:*               LISTEN      15585/docker-proxy
      tcp6       0      0 :::3308                 :::*                    LISTEN      15592/docker-proxy
      
      
  2. 部署tomcat

    1. 拉取tomcat的镜像文件

      docker search tomcat8.5
      docker pull 镜像名
      
    2. 运行tomcat容器

      docker run -d --name tomcat8 -p 8090:8080 -v 宿主目录:容器目录 镜像名
      
      -v 宿主目录:挂载目录:挂载目录,这里的作用就是把tomca的webapps挂载到宿主目录,方便我们在宿主目录操作它。
      
    3. 查看容器运行日志

      docker logs 容器名
      
    4. 删除容器

      docker rm [-f] 容器名
      
    5. 删除镜像文件

      docker rmi 镜像名
      

基础

Docker 是一个开源的容器化平台,它可以用于构建、部署和运行应用程序和服务。容器化是一种轻量级的虚拟化技术,它允许你在容器中封装应用程序和其依赖项,然后在不同的环境中运行这些容器,而无需担心环境差异。以下是使用 Docker 的基本步骤:

  1. 安装 Docker

    首先,你需要安装 Docker。根据你的操作系统,可以从 Docker 官方网站下载并安装 Docker。Docker 提供了适用于 Windows、macOS 和各种 Linux 发行版的版本。

  2. 运行容器

    一旦安装了 Docker,你可以使用命令行或图形用户界面工具来创建和运行容器。以下是一些常见的 Docker 命令:

    • 创建并运行一个容器:

      docker run -it --name mycontainer ubuntu:latest
      

      这将在一个名为 mycontainer 的容器中运行最新版本的 Ubuntu 镜像。

    • 列出正在运行的容器:

      docker ps
      
    • 停止容器:

      docker stop mycontainer
      
    • 删除容器:

      docker rm mycontainer
      
  3. 构建自定义镜像

    除了使用现有的容器镜像,你还可以创建自定义镜像。你可以编写一个 Dockerfile 来定义如何构建你的镜像,然后使用 docker build 命令构建它。例如:

    docker build -t my-custom-image .
    
  4. 使用 Docker Compose

    Docker Compose 是一个工具,用于定义和运行多个 Docker 容器的应用程序。你可以使用一个 YAML 文件来定义应用程序的服务,包括容器镜像、网络设置、环境变量等。然后,使用 docker-compose 命令启动整个应用程序。

  5. 共享和发布镜像

    你可以通过 Docker Hub 或其他容器仓库来共享和发布你的 Docker 镜像。这使得其他人可以轻松地获取你的镜像并在其环境中运行它。

  6. 提交镜像文件:docker commit

  7. 导出本地镜像文件:docker save -o 路径/xxx.tar

  8. 导入tar文件到本地镜像库:docker load --input xxx.tar

这只是 Docker 的基本用法。Docker 还提供了许多功能,如容器网络、存储卷、服务编排等,可以帮助你更好地管理和扩展容器化应用程序。你可以深入学习 Docker 的各个方面,以充分发挥其潜力,适应你的特定需求。还可以探索容器编排工具,如 Docker Swarm 和 Kubernetes,用于管理多个容器的复杂应用程序。

进阶

Docker 提供了许多进阶命令,可以用于更复杂的容器管理任务。以下是一些常见的 Docker 进阶命令:

  1. 查看容器日志:使用 docker logs 命令可以查看容器的标准输出日志。

    docker logs container_name
    
  2. 进入正在运行的容器:使用 docker exec 命令可以进入正在运行的容器,以便在容器内执行命令。

    docker exec -it container_name /bin/bash
    
  3. 导出和导入容器:使用 docker export 命令可以将容器导出为一个文件,然后使用 docker import 命令将其导入为一个新的镜像。

    docker export container_name > container.tar
    docker import container.tar new_image_name
    
  4. 暂停和恢复容器:使用 docker pausedocker unpause 命令可以暂停和恢复容器的执行。

    docker pause container_name
    docker unpause container_name
    
  5. 查看容器内的进程:使用 docker top 命令可以查看容器内运行的进程。

    docker top container_name
    
  6. 重命名容器:使用 docker rename 命令可以为容器重命名。

    docker rename old_container_name new_container_name
    
  7. 查看容器的详细信息:使用 docker inspect 命令可以查看容器的详细配置信息。

    docker inspect container_name
    
  8. 查找容器:使用 docker ps 命令可以查找容器,可以使用各种选项来筛选和排序结果。

    docker ps -a (显示所有容器)
    docker ps -q (仅显示容器ID)
    docker ps --filter "status=running" (仅显示正在运行的容器)
    
  9. 移除所有已停止的容器:使用以下命令可以删除所有已停止的容器。

    docker container prune
    
  10. 容器之间的连接和通信:Docker 提供了一些命令,如 docker network createdocker network connect,用于创建和管理容器之间的网络连接,以便它们可以相互通信。

  11. 宿主和容器之间拷贝文件:

    docker cp 宿主目录 容器id|容器名:容器目录
    

这些是一些 Docker 的进阶命令,它们可以帮助你更灵活地管理和操作容器。要详细了解这些命令的用法和选项,请查阅 Docker 的官方文档或运行 docker --help 来查看命令的帮助信息。

posted @ 2023-11-14 15:08  Miomizu  阅读(136)  评论(0)    收藏  举报