侧边栏壁纸
博主头像
人生短短几个秋

行动起来,活在当下

  • 累计撰写 45 篇文章
  • 累计创建 20 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker笔记

人生短短几个秋
2025-01-25 / 0 评论 / 0 点赞 / 13 阅读 / 0 字

Title: Docker笔记
Date: 2023-9-13 15:00:23
Author: lijilong

安装docker

以下为centos下安装docker步骤,其他系统参照官方文档:https://docs.docker.com/engine/install/centos/

1.移除以前docker相关包

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

image-20230913102747127

2. 配置yum源

安装yum-utils工具

sudo yum install -y yum-utils

添加阿里云的Docker CE软件源

sudo yum-config-manager \
	--add-repo \
	http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

image-20230913103501725

3. 安装docker

安装Docker CE和相关的软件包

sudo yum install -y docker-ce docker-ce-cli containerd.io

image-20230913103555439

# 以下是在安装k8s的时候使用,安装指定版本的docker
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

4. 配置开机自启动

配置开机立即启动并且现在也启动

systemctl enable docker --now

5. 配置镜像加速

创建一个 /etc/docker/daemon.json 文件并写入配置内容,设置Docker的镜像仓库镜像地址为阿里云镜像地址(https://588115ga.mirror.aliyuncs.com)

配置阿里云镜像:阿里云控制台-容器镜像服务ACR ,镜像工具-镜像加速器

image-20230913104631065

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://588115ga.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
# 重新加载守护进程的配置,确保使用新的配置
sudo systemctl daemon-reload
# 重新启动Docker服务,以应用配置更改
sudo systemctl restart docker

查看docker版本,验证是否安装完成

docker --version

image-20230913141333565

docker命令

1. 镜像操作

Docker官方镜像仓库 :docker hub

查看镜像:docker images

docker images 命令用于列出本地主机上的 Docker 镜像。它将显示已经下载到本地的镜像列表,包括镜像的名称、标签、镜像ID、大小等信息。以下是 “docker images” 命令的语法和示例:

docker images [选项] [镜像名称]
  • 选项:用于设置列表的输出格式和其他参数。
  • 镜像名称:可选,用于筛选并只显示指定名称的镜像。

示例使用:

docker images

上述命令将列出本地主机上的所有 Docker 镜像。

docker images nginx

上述命令将只显示名称为 “nginx” 的 Docker 镜像。

运行此命令后,将显示包含镜像名称、标签、镜像ID、创建时间和大小等信息的表格。

image-20230913140330041

  • REPOSITORY:镜像所在的仓库名

  • TAG:镜像的标签

  • IMAGE ID:镜像的唯一ID

  • CREATED:镜像的创建时间

  • SIZE:镜像的大小

下载镜像:docker pull

docker pull 命令用于从镜像仓库中下载一个或多个 Docker 镜像到本地。在使用 “docker run” 命令运行容器之前,通常需要先使用 “docker pull” 命令将所需的镜像下载到本地。以下是 “docker pull” 命令的语法和示例:

docker pull [选项] <镜像名称>
  • 选项:用于设置镜像下载的参数,例如镜像标签、认证方式等。
  • 镜像名称:要下载的 Docker 镜像的名称,通常是仓库名加上镜像标签。

示例使用:

docker pull nginx

上述命令将从 Docker Hub 下载最新版本的 “nginx” 镜像到本地。

docker pull ubuntu:20.04

上述命令将从 Docker Hub 下载标签为 “20.04” 的 Ubuntu 镜像到本地。

运行该命令后,Docker 将从指定的镜像仓库下载所需的镜像,并将其保存在本地主机上供后续使用。下载的镜像可以通过 “docker images” 命令进行查看。

删除镜像:docker rmi

docker rmi 命令用于删除本地主机上的一个或多个 Docker 镜像。当您不再需要某个镜像时,可以使用 “docker rmi” 命令将其从本地主机上删除,释放磁盘空间。以下是 “docker rmi” 命令的语法和示例:

docker rmi [选项] <镜像名称>
  • 选项:用于设置删除镜像的参数,例如强制删除、删除依赖等。
  • 镜像名称:要删除的 Docker 镜像的名称或镜像ID。

示例使用:

docker rmi nginx

上述命令将删除本地主机上名称为 “nginx” 的 Docker 镜像。

docker rmi ubuntu:20.04

上述命令将删除本地主机上标签为 “20.04” 的 Ubuntu 镜像。

注意:如果镜像正在被使用,或者有其他镜像以该镜像为基础构建而来,删除命令可能会失败。如果要强制删除镜像,可以使用 “-f” 或 “–force” 参数。

请小心使用 “docker rmi” 命令,确保不会删除您仍然需要的镜像。删除的镜像无法恢复,您可能需要重新下载或重新构建它们。

添加标签:docker tag

docker tag 命令用于为 Docker 镜像添加或修改标签。通过为镜像添加标签,可以更方便地识别和管理镜像,并在推送到镜像仓库时指定不同的标签。以下是 "docker tag" 命令的语法和示例:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • SOURCE_IMAGE:已存在的本地镜像的名称或者标签(tag)。
  • TAGET_IMAGE:打算为镜像设置的新的名称或者标签。

示例使用:

docker tag myimage:latest myrepo/myimage:v1.0

上述命令将本地名为 myimage:latest 的镜像打上名为 myrepo/myimage、标签为 v1.0 的新标签。

需要注意的是,Docker 镜像的名称由两个部分组成,即仓库名和镜像名,用斜杠 / 分隔开来,而标签是可选的。标签可以用于唯一标识一个特定版本或者变体的镜像,当没有指定标签时,默认为 latest

构建镜像:docker build

docker build 命令用于根据 Dockerfile 构建一个自定义的 Docker 镜像。Dockerfile 是一个包含构建指令的文本文件,它定义了如何构建镜像的步骤和配置。

基本语法如下:

docker build [OPTIONS] PATH | URL | -

其中,PATH 是 Dockerfile 所在的路径。你可以指定一个本地路径,例如 .(表示当前目录),或者指定一个 URL 或 -(表示从标准输入读取 Dockerfile 内容)。

示例使用:

docker build -t my_image .

上述命令会在当前目录下的 Dockerfile 中定义的基础上构建一个名为 my_image 的镜像。

通过运行 docker build 命令,你可以根据 Dockerfile 自定义构建镜像,指定依赖项、运行环境、应用程序等。构建过程会按照 Dockerfile 中的指令逐步执行,每个指令都会生成一个中间镜像层。最后,生成的镜像可以用于创建和运行容器。

注意,在构建过程中,Docker 会利用构建缓存来提高效率,根据指令的变化情况判断是否需要重新构建。你可以通过使用 --no-cache 选项来禁用构建缓存,强制重新构建镜像:

docker build --no-cache -t my_image .

对于大型或复杂的镜像构建过程,你还可以使用 Docker Compose 或构建工具链(如 BuildKit)来更好地管理和优化构建过程。

推送镜像:docker push

docker push 命令用于将本地主机的 Docker 镜像推送到远程镜像仓库,使其在远程环境中可用。推送镜像到远程仓库后,其他用户可以从远程仓库获取该镜像并使用。

以下是 "docker push" 命令的语法和示例:

docker push <远程仓库地址>/<镜像名称>:<标签>
  • 远程仓库地址:要推送镜像的远程仓库地址,如 Docker Hub、私有镜像仓库等。
  • 镜像名称:要推送的 Docker 镜像的名称。
  • 标签:要推送的镜像的标签。标签可以用来指定不同版本或不同配置的镜像。

示例使用:

docker push myorg/nginx:v1.0

上述命令将名为 "myorg/nginx" 的镜像以标签 "v1.0" 推送到远程仓库。

在执行 "docker push" 命令之前,请确保已经登录到要推送的远程仓库,使用 "docker login" 命令进行认证。此外,在推送之前,还需要确保本地主机上已经存在相应的镜像。

注意:推送镜像可能需要一定的时间,具体取决于镜像大小和网络连接速度。推送完成后,您可以在远程仓库中查看和使用该镜像。

2. 容器操作

查看容器:docker ps

docker ps 命令用于列出当前正在运行的容器。它可以展示容器的一些基本信息,如容器 ID、镜像、状态、端口映射等。

基本语法如下:

docker ps [OPTIONS]

示例使用:

docker ps

上述命令会列出当前正在运行的容器的信息。

默认情况下,docker ps 只显示正在运行的容器。如果想要查看所有的容器(包括已停止的容器),可以使用 -a 选项:

docker ps -a

上述命令会显示所有容器的信息,包括正在运行的和已停止的容器。

docker ps 还支持其他选项,例如 -q 用于只显示容器的 ID, -f 用于根据条件过滤容器, -s 用于显示容器的磁盘使用情况等。你可以运行 docker ps --help 命令查看所有可用选项的详细信息。

通过运行 docker ps 命令,你可以查看容器的状态和信息,方便管理和监控正在运行的容器。

运行容器:docker run

用于在 Docker 中运行一个新的容器,基于现有的镜像创建并启动一个容器。运行容器之前,Docker 首先会检查本地是否存在指定名称的镜像。如果不存在,它将从 Docker Hub 或其他配置的仓库下载镜像。

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
  • IMAGE 是要使用的镜像名,可包含仓库名。
  • TAG 是可选的镜像标签,用于指定具体版本,默认为 latest
  • COMMAND 是可选的容器启动命令,用于覆盖镜像中定义的默认命令。
  • ARG 是可选的命令参数。

示例使用:

docker run -it ubuntu:20.04 /bin/bash

上述命令会以交互模式运行一个基于 ubuntu:20.04 镜像的容器,并执行 /bin/bash 命令。这将启动一个终端会话,并将你连接到容器的终端。

docker run --name mynginx -d --restart always -p 88:80 nginx

上述命令将在后台运行一个名为mynginx的容器,使用nginx镜像。

  • --name mynginx:为容器指定名称为mynginx
  • -d:以后台模式运行容器。
  • --restart always:在容器退出或 Docker 守护进程启动时,自动重启容器。
  • -p 88:80:将主机的端口 88 映射到容器的端口 80,以便通过主机的 88 端口访问容器中运行的 Nginx 服务。
  • nginx:使用的 Docker 镜像名称为nginx

通过运行 docker run 命令,你可以创建和运行一个容器,基于指定的镜像,并在容器内部执行指定的命令。你还可以使用其他选项来定制容器的行为,例如指定端口映射、挂载卷、设置环境变量等。要了解更多选项和用法,请参阅 Docker 官方文档。

重启容器:docker restart

docker restart 命令用于重新启动一个正在运行的容器。它会先停止容器,然后再启动它。重新启动容器时,会使用相同的配置和参数来启动。

基本语法如下:

docker restart [OPTIONS] CONTAINER [CONTAINER...]

其中,CONTAINER 是要重新启动的容器的名称或 ID。你可以指定一个或多个容器的名称或 ID。

示例使用:

docker restart my_container

上述命令会重新启动名为 my_container 的容器。

通过运行 docker restart 命令,你可以在需要时对正在运行的容器进行重启,以使配置或应用程序的更改生效。重新启动容器时,容器内部的应用程序会重新启动,并使用更新后的配置。注意,重新启动容器可能导致服务中断,请谨慎使用。

停止容器:docker stop

docker stop 命令用于停止一个正在运行的容器。它会发送 SIGTERM 信号给容器内的主进程,让容器优雅地停止运行。

基本语法如下:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

其中,CONTAINER 是要停止的容器的名称或 ID。你可以指定一个或多个容器的名称或 ID。

示例使用:

docker stop my_container

上述命令会停止名为 my_container 的容器。

可选的选项可以用于定制停止行为,例如超时时间和停止信号等。例如,使用 -t 选项可以指定停止容器前等待的时间(默认为 10 秒):

docker stop -t 30 my_container

上述命令会停止名为 my_container 的容器,等待 30 秒后强制结束。

通过运行 docker stop 命令,你可以停止正在运行的容器,确保应用程序在退出时进行清理和处理相关资源。但请注意,并非所有应用程序都要求使用 docker stop 命令来停止容器,有些应用程序可能会自己处理退出信号。

删除容器:docker rm

docker rm 命令用于删除一个或多个容器。删除容器时,Docker 会自动清理容器的相关资源(如网络、卷等)。

基本语法如下:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

其中,CONTAINER 是要删除的容器的名称或 ID。你可以指定一个或多个容器的名称或 ID。

示例使用:

docker rm my_container

上述命令会删除名为 my_container 的容器。

可选的选项可以用于定制删除行为,例如删除正在运行的容器或强制删除容器等。例如,使用 -f 选项可以强制删除正在运行的容器:

docker rm -f my_container

上述命令会强制删除名为 my_container 的容器,即使它正在运行中。

通过运行 docker rm 命令,你可以删除无用的容器,确保容器资源得到清理和释放,节省空间和资源。但是请注意,删除容器时会永久丢失容器内的数据,因此请谨慎使用 docker rm 命令。

docker安装java

要在Docker中安装Java 8,你可以按照以下步骤进行操作:

  1. 拉取Java 8镜像:运行以下命令从Docker镜像仓库中拉取Java 8镜像:

    docker pull openjdk:8-jdk
    
  2. 运行Java 8容器:使用以下命令在Docker中运行Java 8容器:

    docker run -it openjdk:8-jdk bash
    

​ 这将创建一个新的Docker容器,并在其中启动一个交互式的bash终端。

  1. 现在,你可以在Docker容器中使用Java 8了。例如,可以运行以下命令来查看Java版本:

    java -version
    

    这将显示安装的Java版本信息。

docker安装mysql

1. 创建 MySQL配置文件

要在Docker上挂载MySQL的配置文件,你可以按照以下步骤进行操作:

  1. 首先,创建一个用于挂载配置文件的目录。

    mkdir -p /data/mysql/conf
    
  2. 创建MySQL配置文件 my.cnf

    cd /data/mysql/conf
    vi my.cnf
    

    i 进入编辑模式,然后复制以下内容到文件中粘贴,然后按 :wq 执行保存并退出。

    [client]
    default-character-set=utf8mb4
     
    [mysql]
    default-character-set=utf8mb4
     
    [mysqld]
    init_connect='SET collation_connection = utf8mb4_unicode_ci'
    init_connect='SET NAMES utf8mb4'
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    

2. 拉取mysql镜像

下载mysql5.7版本的镜像

docker pull mysql:5.7

image-20230913141349565

3. 启动mysql容器

创建一个名为 “mysql-5.7” 的容器,使用MySQL 5.7镜像,并进行端口映射、路径挂载和环境变量配置,可以使用主机的3306端口连接至运行在容器中的MySQL数据库。

docker run -p 3306:3306 --name mysql-5.7 \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:5.7 
  • -p 3306:3306:端口映射,将主机的3306端口与容器的3306端口进行映射,以便通过主机的3306端口访问MySQL服务。
  • --name mysql-5.7:重新命名,将启动的容器命名为mysql-5.7
  • -v /data/mysql/log:路径挂载,将主机上的日志目录挂载到容器内的相应目录,以实现数据的持久化存储和配置的修改。
  • -v /data/mysql/data:路径挂载,将主机上的数据目录挂载到容器内的相应目录,以实现数据的持久化存储和配置的修改。
  • -v /data/mysql/conf:路径挂载,将主机上的配置文件目录挂载到容器内的相应目录,以实现数据的持久化存储和配置的修改。
  • -e MYSQL_ROOT_PASSWORD=root:环境变量配置,设置MySQL的root用户的密码为"root"。
  • --restart=always:自动重启,设置容器为始终自动重启,以确保MySQL服务在意外停止后能够自动恢复运行。
  • -v /data/mysql/log:路径挂载,将主机上的日志、数据和配置文件目录挂载到容器内的相应目录,以实现数据的持久化存储和配置的修改。

image-20230913141405127

docker安装 Nacos

需要有java环境,和数据库连接。

1. 创建 Nacos 的配置文件

要在 Docker 上挂载 Nacos 的配置文件,你可以按照以下步骤进行操作:

  1. 创建一个目录,用于存放 Nacos 的配置文件。例如,我们创建一个名为 /data/nacos/nacos-config 的目录。

    mkdir -p /data/nacos/nacos-config
    
  2. nacos-config 目录中,创建一个名为 custom.properties 的配置文件,并根据需要进行配置。

    cd /data/nacos/nacos-config/
    vi custom.properties
    

    i 进入编辑模式,然后复制以下内容到文件中粘贴,然后依次按下 :wq 执行保存并退出

    server.port=8848
    spring.datasource.platform=mysql
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/<database_name>?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=root
    

2. 拉取 Nacos 镜像

拉取 Nacos Server 镜像

docker pull nacos/nacos-server:latest

3. 启动 Nacos 服务

  1. 创建并启动 Nacos Server 容器,并将 nacos-config 目录挂载到容器中的/home/nacos/init.d/custom.properties

    docker run --name nacos -e MODE=standalone -p 8848:8848 -v /data/nacos/nacos-config:/home/nacos/init.d/custom.properties -d nacos/nacos-server:latest
    

    在上述命令中,我们使用 docker run 创建并启动一个 Nacos Server 容器。

    --name: 参数用于指定容器的名称为 nacos

    -e MODE=standalone :参数用于设置 Nacos 运行模式为单机模式

    -p 8848:8848 :参数用于将容器的 8848 端口映射到主机的 8848 端口

    -v /data/nacos/nacos-config:/home/nacos/init.d/custom.properties:将 nacos-config 目录挂载到容器中的 /home/nacos/init.d/custom.properties,这样就能够将自定义的配置文件加载到容器中。

    -d :参数表示在后台运行容器。

  2. 等待一段时间,Nacos 服务会启动完成。你可以通过访问 http://localhost:8848/nacos 来访问 Nacos 控制台。

4. 访问Nacos 控制台

运行上述命令后,将会创建一个 Nacos Server 容器,并启动其中的 Nacos 服务。等待一段时间,Nacos 服务会启动完成。你可以通过访问 http://localhost:8848/nacos 来访问 Nacos 控制台。

现在,你已经成功安装并运行了 Nacos 的 Docker 容器,并将配置文件挂载到容器中。你可以在 nacos-config 目录下编辑和管理 Nacos 的配置文件。

docker安装Redis

1. 准备redis配置文件内容

要在 Docker 上挂载 Redis的配置文件,你可以按照以下步骤进行操作:

  1. 创建一个目录,用于存放 Redis的配置文件。例如,我们创建一个名为 /data/redis/conf 的目录。

    mkdir -p /data/redis/conf
    
  2. conf 目录中,创建一个名为 redis.conf 的配置文件,并根据需要进行配置。

    cd /data/redis/conf
    vi redis.conf
    

    i 进入编辑模式,然后复制以下内容到文件中粘贴,然后按 :wq 执行保存并退出

    appendonly yes
    port 6379
    bind 0.0.0.0
    

2. 拉取Redis镜像

docker pull redis:6.2.5

3. 启动Redis服务

运行以下命令

docker run -d -p 6379:6379 --restart=always \
	-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
	-v  /data/redis/data:/data \
 	--name redis redis:6.2.5 \
    redis-server /etc/redis/redis.conf
  • -d 表示在后台运行容器。
  • -p 6379:6379 将主机的6379端口映射到容器的6379端口。这样,你可以通过主机上的6379端口访问Redis服务。
  • --restart=always 设置在容器退出时自动重启容器。
  • -v /data/redis/conf/redis.conf:/etc/redis/redis.conf 挂载主机上的Redis配置文件,将/data/redis/conf/redis.conf替换为实际的配置文件路径。
  • -v /data/redis/data:/data 挂载主机上的数据目录用于持久化存储Redis数据,将/data/redis/data替换为实际的数据目录路径。
  • --name redis 指定容器的名称为redis。
  • redis:6.2.5 指定使用Redis 6.2.5的镜像。
  • redis-server /etc/redis/redis.conf 在容器启动时指定使用/etc/redis/redis.conf作为配置文件启动Redis服务。
0

评论区