diff --git a/2024/01/19/docker/index.html b/2024/01/19/docker/index.html index abffc8e..7bb15ab 100644 --- a/2024/01/19/docker/index.html +++ b/2024/01/19/docker/index.html @@ -26,7 +26,7 @@ - + @@ -436,7 +436,7 @@

Docker的常见命令

  • docker ps 列出正在运行的容器
  • docker ps -a 列出所有的容器
  • docker rm 删除某个容器
  • -
  • docker exec (-it +
  • docker exec (-it mycontainer /bin/sh)进入某一个容器; docker exit 退出某个容器
  • docker stop container-id 停止指定 id diff --git a/local-search.xml b/local-search.xml index 6b17f34..98c35fe 100644 --- a/local-search.xml +++ b/local-search.xml @@ -62,7 +62,7 @@ /2024/01/19/docker/ -

    参考文档

    Docker介绍

    Docker是一个应用打包、分发、部署的工具,也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。

    Docker

    特性普通虚拟机Docker
    跨平台通常只能在桌面级系统运行,例如Windows/Mac,无法在不带图形界面的服务器上运行支持的系统非常多,各类 windows 和 Linux 都支持
    性能性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了性能好,只虚拟软件所需运行环境,最大化减少没用的配置
    自动化需要手动安装所有东西一个命令就可以自动部署好所需环境
    稳定性稳定性不高,不同系统差异大稳定性好,不同系统都一样部署方式

    Docker 主要功能

    • 打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
    • 分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装
    • 部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在Windows/Mac/Linux。

    Docker 用途介绍

    • 应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用
    • 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如Redis / MongoDB / ElasticSearch / ELK
    • 多个版本软件共存,不污染系统,例如Python2、Python3,Redis4.0,Redis5.0
    • Windows 上体验/学习各种 Linux 系统

    Docker主要概念

    • 镜像:可以理解为软件安装包,可以方便的进行传播和安装。
    • 容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。
    • 简单来说就是我们存储上传镜像,通过镜像生成容器,镜像可以在dockerhub中进行管理

    Docker的安装

    版本的安装

    • 桌面版:https://www.docker.com/products/docker-desktop
    • 服务器版:https://docs.docker.com/engine/install/#server

    镜像加速源

    镜像加速器镜像加速器地址
    Docker 中国官方镜像https://registry.docker-cn.com
    DaoCloud 镜像站http://f1361db2.m.daocloud.io
    Azure 中国镜像https://dockerhub.azk8s.cn
    科大镜像站https://docker.mirrors.ustc.edu.cn
    阿里云https://ud6340vz.mirror.aliyuncs.com
    七牛云https://reg-mirror.qiniu.com
    网易云https://hub-mirror.c.163.com
    腾讯云https://mirror.ccs.tencentyun.com

    加入以下命令:=="registry-mirrors":["https://registry.docker-cn.com,https://hub-mirror.c.163.com"]==

    Docker镜像下载与软件安装

    Docker 安装的优点

    • 一个命令就可以安装好,快速方便
    • 有大量的镜像,可直接使用
    • 没有系统兼容问题,Linux 专享软件也照样跑
    • 支持软件多版本共存
    • 用完就丢,不拖慢电脑速度
    • 不同系统和硬件,只要安装好 Docker其他都一样了,一个命令搞定所有

    Docker 安装 Redis

    Docker 官方镜像仓库查找 Redis :https://hub.docker.com/

    查找redis镜像

    找到如下的命令:

    1
    $ docker run --name some-redis -d redis
    • --name的意思就是为产生的容器命名,比如这里命名为some-redis
    • -d的意思是在后台运行
    • 执行docker run就能立刻pull镜像、生成容器、以及运行容器

    Docker安装ubuntu

    首先先从远端拉取镜像,可以指定版本或者是最新的版本

    接着本地进行run

    1
    2
    - docker pull ubuntu:18.04
    - docker run -it ubuntu /bin/bash

    Docker参考文档

    命令参考:https://docs.docker.com/engine/reference/commandline/run/

    Docker的常见命令

    • docker run运行一个容器(-d后台运行、--name重命名container)
    • docker stop 停止运行一个容器
    • docker ps 列出正在运行的容器
    • docker ps -a 列出所有的容器
    • docker rm 删除某个容器
    • docker exec (-it/bin/sh)进入某一个容器; docker exit退出某个容器
    • docker stop container-id 停止指定 id的容器docker start container-id 启动某个id容器
    • docker images 查看镜像列表
    • docker rm container-id 删除指定 id 的容器
    • docker rmi image-id 删除指定 id 的镜像
    • docker volume ls 查看 volume 列表
    • docker network ls 查看网络列表
    • docker-compose up表示的意思是在docker-compose.yml的文件夹所在的位置运行如下
    • docker-compose up -d 后台运行只需要加一个 -d 参数
    • docker-compose ps 查看运行状态
    • docker-compose stop 停止运行
    • docker-compose 重启docker compose的服务
    • docker-compose restart service-name 重启单个服务
    • docker-compose exec service-name sh 进入容器命令行

    Docker创建镜像

    Dockerfile是用于创建自定义Docker镜像的文件,其主要作用包括配置文件、挂载点、对外暴露的端口和设置环境变量

    容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果删除了容器,也就删除了其最上面的读写层,文件改动也就丢失了。Docker使用存储驱动管理镜像每层内容及可读写层的容器层。

    Dockerfile 操作常用指令

    1. FROM 镜像

      指定新镜像所基于的基础镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条 FROM 指令

      1
      2
      #指定了go的镜像:这个时候会从网上下载
      FROM golang:1.20-alpine
    2. MAINTAINER 名字

      说明新镜像的维护人信息

      1
      2
      #指定维护者的信息
      LABEL maintainer="XXXXX@gmail.com"
    3. WORKDIR 路径 为后续的 RUN、CMD、ENTRYPOINT指定工作目录

      这里定义的目录相当于是在docker的文件夹下定义新的目录并会将本地的文件内容上传上去

      1
      2
      # 定义工作目录
      WORKDIR /Workspace/ApiService
    4. RUN 命令

      在所基于的镜像上执行命令,并提交到新的镜像中

      1
      2
      #编译应用程序
      RUN go build -o api_service main.go
    5. CMD ["要运行的程序", "参数1", "参数2"]

      Dockerfile只能有一条CMD命令。如果指定多条命令,只执行最后一条命令。

      1
      2
      # 运行应用程序
      CMD ["./api_service"]
    6. EXPOSE 端口号

      指定新镜像加载到 Docker 时要开启的端口

      1
      2
      # 暴露端口
      EXPOSE 8080
    7. ENV 环境变量 变量值

      设置一个环境变量的值,会被后面的 RUN 使用

      1
      2
      3
      # 设置环境变量
      ENV BUILD_ENV local
      ENV TZ=Asia/Shanghai #容器内部的时间设置与上海所在的时区一致
    8. ADD 源文件/目录 目标文件/目录

      将源文件复制到镜像中,源文件要与 Dockerfile位于相同目录

      例子本地的文件在/Workspace/ApiService中,这个时候会将本地的/Workspace/ApiService目录下所有的文件送到docker中的/Workspace/ApiService/docker

      1
      2
      3
      4
      WORKDIR /Workspace/ApiService

      ADD docker .
      #ADD . . #这里表示相同文件夹目录直接复制
    9. VOLUME [“目录”] 在容器中创建一个挂载点

    Build镜像并运行

    构建dockerfile镜像并运行

    要运行 Dockerfile 文件,需要使用 Docker 工具。Docker可以在不同的操作系统上运行,包括 Windows、macOS 和各种 Linux发行版。以下是一些运行 Dockerfile 的步骤:

    1. 安装 Docker 工具

    在官网上下载并安装 Docker工具,根据你的操作系统选择对应版本。安装完成后,可以在终端中运行docker 命令来检查是否安装成功。

    • 进入 Dockerfile 所在目录

    打开终端,进入 Dockerfile 所在目录。可以使用cd 命令切换目录。

    • 构建 Docker 镜像

    使用以下命令构建 Docker 镜像:

    1
    2
    docker build -t <镜像名称> .
    #docker build -t api_service .

    其中 -t参数用于指定镜像的名称,. 表示 Dockerfile所在目录。执行该命令后,Docker 会根据 Dockerfile文件中的指令创建镜像。

    • 运行 Docker 容器

    使用以下命令运行 Docker 容器:

    1
    2
    3
    docker run -p <主机端口>:<容器端口> <镜像名称>
    docker run -d --name my_container -p<主机端口>:<容器端口> <镜像名称>
    #docker run -d --name api-container -p 8080:8080 api_service

    其中 -p参数用于指定主机端口和容器端口的映射关系,<镜像名称>是在第 3 步中指定的镜像名称。执行该命令后,Docker会在后台启动一个容器,并将容器的标准输出输出到终端中。如果 Dockerfile中没有指定端口,需要在运行容器时指定 -p参数,并将容器端口映射到主机上的一个端口。否则,容器会启动失败。

    -d表示的当前的容器可以在后台运行

    --name表示给指定的容器起个名字,否则会随机生成名字

    停止docekr容器

    使用如下命令停止:

    1
    docker stop <container-id>

    其中,<container-id>是要停止的容器的 ID。可以使用以下命令查看正在运行的容器列表:

    1
    docker ps

    如果要停止所有容器,可以使用以下命令:

    1
    docker stop $(docker ps -aq)

    其中,docker ps -aq命令用于列出所有容器的 ID。

    Docker-Compose

    如果项目依赖更多的第三方软件,我们需要管理的容器就更加多,每个都要单独配置运行,指定网络。使用docker-compose把项目的多个服务集合到一起,一键运行。要把项目依赖的多个服务集合到一起,我们需要编写一个docker-compose.yml文件,描述依赖哪些服务

    Wordpress安装

    在dockerhub在安装wordpress的时候,所需要的服务非常多,所以需要把项目依赖的多个服务集合到一起

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    version: '3.1'

    services:

    wordpress:
    image: wordpress
    restart: always
    ports:
    - 8080:80
    environment:
    WORDPRESS_DB_HOST: db
    WORDPRESS_DB_USER: exampleuser
    WORDPRESS_DB_PASSWORD: examplepass
    WORDPRESS_DB_NAME: exampledb
    volumes:
    - wordpress:/var/www/html

    db:
    image: mysql:5.7
    restart: always
    environment:
    MYSQL_DATABASE: exampledb
    MYSQL_USER: exampleuser
    MYSQL_PASSWORD: examplepass
    MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
    - db:/var/lib/mysql

    volumes:
    wordpress:
    db:

    首先编写一个:docker-compose.yml

    接着在docker-compose.ym==l文件所在的位置==执行:docker-compose up就可以了

    注意:执行完docker-composeup之后就已经生成容器并已经成功run起来了

    ]]>
    +

    参考文档

    Docker介绍

    Docker是一个应用打包、分发、部署的工具,也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。

    Docker

    特性普通虚拟机Docker
    跨平台通常只能在桌面级系统运行,例如Windows/Mac,无法在不带图形界面的服务器上运行支持的系统非常多,各类 windows 和 Linux 都支持
    性能性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了性能好,只虚拟软件所需运行环境,最大化减少没用的配置
    自动化需要手动安装所有东西一个命令就可以自动部署好所需环境
    稳定性稳定性不高,不同系统差异大稳定性好,不同系统都一样部署方式

    Docker 主要功能

    • 打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
    • 分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装
    • 部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在Windows/Mac/Linux。

    Docker 用途介绍

    • 应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用
    • 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如Redis / MongoDB / ElasticSearch / ELK
    • 多个版本软件共存,不污染系统,例如Python2、Python3,Redis4.0,Redis5.0
    • Windows 上体验/学习各种 Linux 系统

    Docker主要概念

    • 镜像:可以理解为软件安装包,可以方便的进行传播和安装。
    • 容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。
    • 简单来说就是我们存储上传镜像,通过镜像生成容器,镜像可以在dockerhub中进行管理

    Docker的安装

    版本的安装

    • 桌面版:https://www.docker.com/products/docker-desktop
    • 服务器版:https://docs.docker.com/engine/install/#server

    镜像加速源

    镜像加速器镜像加速器地址
    Docker 中国官方镜像https://registry.docker-cn.com
    DaoCloud 镜像站http://f1361db2.m.daocloud.io
    Azure 中国镜像https://dockerhub.azk8s.cn
    科大镜像站https://docker.mirrors.ustc.edu.cn
    阿里云https://ud6340vz.mirror.aliyuncs.com
    七牛云https://reg-mirror.qiniu.com
    网易云https://hub-mirror.c.163.com
    腾讯云https://mirror.ccs.tencentyun.com

    加入以下命令:=="registry-mirrors":["https://registry.docker-cn.com,https://hub-mirror.c.163.com"]==

    Docker镜像下载与软件安装

    Docker 安装的优点

    • 一个命令就可以安装好,快速方便
    • 有大量的镜像,可直接使用
    • 没有系统兼容问题,Linux 专享软件也照样跑
    • 支持软件多版本共存
    • 用完就丢,不拖慢电脑速度
    • 不同系统和硬件,只要安装好 Docker其他都一样了,一个命令搞定所有

    Docker 安装 Redis

    Docker 官方镜像仓库查找 Redis :https://hub.docker.com/

    查找redis镜像

    找到如下的命令:

    1
    $ docker run --name some-redis -d redis
    • --name的意思就是为产生的容器命名,比如这里命名为some-redis
    • -d的意思是在后台运行
    • 执行docker run就能立刻pull镜像、生成容器、以及运行容器

    Docker安装ubuntu

    首先先从远端拉取镜像,可以指定版本或者是最新的版本

    接着本地进行run

    1
    2
    - docker pull ubuntu:18.04
    - docker run -it ubuntu /bin/bash

    Docker参考文档

    命令参考:https://docs.docker.com/engine/reference/commandline/run/

    Docker的常见命令

    • docker run运行一个容器(-d后台运行、--name重命名container)
    • docker stop 停止运行一个容器
    • docker ps 列出正在运行的容器
    • docker ps -a 列出所有的容器
    • docker rm 删除某个容器
    • docker exec (-it mycontainer/bin/sh)进入某一个容器; docker exit退出某个容器
    • docker stop container-id 停止指定 id的容器docker start container-id 启动某个id容器
    • docker images 查看镜像列表
    • docker rm container-id 删除指定 id 的容器
    • docker rmi image-id 删除指定 id 的镜像
    • docker volume ls 查看 volume 列表
    • docker network ls 查看网络列表
    • docker-compose up表示的意思是在docker-compose.yml的文件夹所在的位置运行如下
    • docker-compose up -d 后台运行只需要加一个 -d 参数
    • docker-compose ps 查看运行状态
    • docker-compose stop 停止运行
    • docker-compose 重启docker compose的服务
    • docker-compose restart service-name 重启单个服务
    • docker-compose exec service-name sh 进入容器命令行

    Docker创建镜像

    Dockerfile是用于创建自定义Docker镜像的文件,其主要作用包括配置文件、挂载点、对外暴露的端口和设置环境变量

    容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果删除了容器,也就删除了其最上面的读写层,文件改动也就丢失了。Docker使用存储驱动管理镜像每层内容及可读写层的容器层。

    Dockerfile 操作常用指令

    1. FROM 镜像

      指定新镜像所基于的基础镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条 FROM 指令

      1
      2
      #指定了go的镜像:这个时候会从网上下载
      FROM golang:1.20-alpine
    2. MAINTAINER 名字

      说明新镜像的维护人信息

      1
      2
      #指定维护者的信息
      LABEL maintainer="XXXXX@gmail.com"
    3. WORKDIR 路径 为后续的 RUN、CMD、ENTRYPOINT指定工作目录

      这里定义的目录相当于是在docker的文件夹下定义新的目录并会将本地的文件内容上传上去

      1
      2
      # 定义工作目录
      WORKDIR /Workspace/ApiService
    4. RUN 命令

      在所基于的镜像上执行命令,并提交到新的镜像中

      1
      2
      #编译应用程序
      RUN go build -o api_service main.go
    5. CMD ["要运行的程序", "参数1", "参数2"]

      Dockerfile只能有一条CMD命令。如果指定多条命令,只执行最后一条命令。

      1
      2
      # 运行应用程序
      CMD ["./api_service"]
    6. EXPOSE 端口号

      指定新镜像加载到 Docker 时要开启的端口

      1
      2
      # 暴露端口
      EXPOSE 8080
    7. ENV 环境变量 变量值

      设置一个环境变量的值,会被后面的 RUN 使用

      1
      2
      3
      # 设置环境变量
      ENV BUILD_ENV local
      ENV TZ=Asia/Shanghai #容器内部的时间设置与上海所在的时区一致
    8. ADD 源文件/目录 目标文件/目录

      将源文件复制到镜像中,源文件要与 Dockerfile位于相同目录

      例子本地的文件在/Workspace/ApiService中,这个时候会将本地的/Workspace/ApiService目录下所有的文件送到docker中的/Workspace/ApiService/docker

      1
      2
      3
      4
      WORKDIR /Workspace/ApiService

      ADD docker .
      #ADD . . #这里表示相同文件夹目录直接复制
    9. VOLUME [“目录”] 在容器中创建一个挂载点

    Build镜像并运行

    构建dockerfile镜像并运行

    要运行 Dockerfile 文件,需要使用 Docker 工具。Docker可以在不同的操作系统上运行,包括 Windows、macOS 和各种 Linux发行版。以下是一些运行 Dockerfile 的步骤:

    1. 安装 Docker 工具

    在官网上下载并安装 Docker工具,根据你的操作系统选择对应版本。安装完成后,可以在终端中运行docker 命令来检查是否安装成功。

    • 进入 Dockerfile 所在目录

    打开终端,进入 Dockerfile 所在目录。可以使用cd 命令切换目录。

    • 构建 Docker 镜像

    使用以下命令构建 Docker 镜像:

    1
    2
    docker build -t <镜像名称> .
    #docker build -t api_service .

    其中 -t参数用于指定镜像的名称,. 表示 Dockerfile所在目录。执行该命令后,Docker 会根据 Dockerfile文件中的指令创建镜像。

    • 运行 Docker 容器

    使用以下命令运行 Docker 容器:

    1
    2
    3
    docker run -p <主机端口>:<容器端口> <镜像名称>
    docker run -d --name my_container -p<主机端口>:<容器端口> <镜像名称>
    #docker run -d --name api-container -p 8080:8080 api_service

    其中 -p参数用于指定主机端口和容器端口的映射关系,<镜像名称>是在第 3 步中指定的镜像名称。执行该命令后,Docker会在后台启动一个容器,并将容器的标准输出输出到终端中。如果 Dockerfile中没有指定端口,需要在运行容器时指定 -p参数,并将容器端口映射到主机上的一个端口。否则,容器会启动失败。

    -d表示的当前的容器可以在后台运行

    --name表示给指定的容器起个名字,否则会随机生成名字

    停止docekr容器

    使用如下命令停止:

    1
    docker stop <container-id>

    其中,<container-id>是要停止的容器的 ID。可以使用以下命令查看正在运行的容器列表:

    1
    docker ps

    如果要停止所有容器,可以使用以下命令:

    1
    docker stop $(docker ps -aq)

    其中,docker ps -aq命令用于列出所有容器的 ID。

    Docker-Compose

    如果项目依赖更多的第三方软件,我们需要管理的容器就更加多,每个都要单独配置运行,指定网络。使用docker-compose把项目的多个服务集合到一起,一键运行。要把项目依赖的多个服务集合到一起,我们需要编写一个docker-compose.yml文件,描述依赖哪些服务

    Wordpress安装

    在dockerhub在安装wordpress的时候,所需要的服务非常多,所以需要把项目依赖的多个服务集合到一起

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    version: '3.1'

    services:

    wordpress:
    image: wordpress
    restart: always
    ports:
    - 8080:80
    environment:
    WORDPRESS_DB_HOST: db
    WORDPRESS_DB_USER: exampleuser
    WORDPRESS_DB_PASSWORD: examplepass
    WORDPRESS_DB_NAME: exampledb
    volumes:
    - wordpress:/var/www/html

    db:
    image: mysql:5.7
    restart: always
    environment:
    MYSQL_DATABASE: exampledb
    MYSQL_USER: exampleuser
    MYSQL_PASSWORD: examplepass
    MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
    - db:/var/lib/mysql

    volumes:
    wordpress:
    db:

    首先编写一个:docker-compose.yml

    接着在docker-compose.ym==l文件所在的位置==执行:docker-compose up就可以了

    注意:执行完docker-composeup之后就已经生成容器并已经成功run起来了

    ]]>
    diff --git a/search.xml b/search.xml index 95ab514..1ac135a 100644 --- a/search.xml +++ b/search.xml @@ -1254,7 +1254,7 @@ href="https://docs.docker.com/engine/reference/commandline/run/">https://docs.do
  • docker ps 列出正在运行的容器
  • docker ps -a 列出所有的容器
  • docker rm 删除某个容器
  • -
  • docker exec (-it +
  • docker exec (-it mycontainer /bin/sh)进入某一个容器; docker exit 退出某个容器
  • docker stop container-id 停止指定 id