Docker基础教程

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker基础教程:本文介绍什么是docker,以及docker使用场景,然后讲讲dockerfile以及镜像仓库harbor以及实际使用场景实战

Docker基础教程

1、Docker是什么?

​ Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

1.1、Docker的应用场景

  • Web 应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他的后台应用
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境

1.2、Docker 的优点

​ Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1.2.1、快速交付

Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

  • 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
  • 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
  • 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
  • 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

1.2.2、响应式部署和扩展

Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。’

1.2.3、高资源使用率

Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

2、Docker 架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 面向对象
容器 对象
镜像

img

概念 说明
Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container) 容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
Docker 主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker Registry Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

3、Docker安装

3.1 、Centos 7下安装

##安装命令
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
##安装完成后启动服务
service docker start

3.2、Windows 10下安装

现在 Docker 有专门的 Win10 专业版系统的安装包,需要开启 Hyper-V。请参考如下链接

https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

首先注册一个dockerhub账号:https://hub.docker.com/

Docker 下载地址:https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe

https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe

安装完成Docker-Desktop后,启动容器。然后即可。然后听过powershell控制台操作。

3.3、Mac下安装

##命令安装
brew cask install docker

也可以离线安装:https://download.docker.com/mac/stable/Docker.dmg

4、镜像仓库

4.1、国内仓库

网易: https://c.163yun.com/hub#/m/home/ (需登录)
阿里云:https://cr.console.aliyun.com/cn-beijing/instances/images (需登录)
DaoCloud 道客网络: https://hub.daocloud.io/

4.2、国外仓库

Docker Hub: https://hub.docker.com/
Quay: https://quay.io/search

4.3、配置镜像加速

  • 桌面版的可以通过设置进行设置镜像加速器(如下MAC中配置的我自己的阿里云镜像加速器)

image-20200718161359293

  • 控制台可以通过修改 /ect/docker/daemon.json进行修改(Linux非桌面版本)
{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

5、Docker常用命令

具体命令的说明,点开链接进行查看使用说明

5.1、容器生命周期管理

5.2、容器操作

5.3、容器rootfs命令

5.4、镜像仓库

5.5、本地镜像管理

5.6、info|version

6、创建镜像

​ 首先我们要知道怎么来创建镜像,创建镜像需要写一些命令脚本来加载依赖项或者执行一些必要的操作。而这些命令的集合存放的文件就叫做Dockerfile。

6.1、Dockerfile文件

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。相关指令说明如下:

说明 命令 备注
基础镜像信息 FROM 加载依赖项
维护者信息 MAINTAINER 作者信息
镜像操作指令 RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME、ENV等
容器启动时执行指令 CMD、ENTRYPOINT

6.1.1、FROM:指定基础镜像

第一条指令。scratch是虚拟的镜像,表示一个空白的镜像。例如镜像依赖tomcat 。 FROM tomcat

6.1.2、RUN:执行命令

shell 格式: RUN <命令> ,RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
exec 格式: RUN ["可执行文件", "参数1", "参数2"] 。run可以写多个,每一个指令都会建立一层,所以正确写法应该是↓
RUN buildDeps='gcc libc6-dev make' \
         && apt-get update \
         && apt-get install -y $buildDeps \
         && wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \
         && mkdir -p /usr/src/redis \
         && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
         && make -C /usr/src/redis \
         && make -C /usr/src/redis install \
         && rm -rf /var/lib/apt/lists/* \
         && rm redis.tar.gz \
         && rm -r /usr/src/redis \
         && apt-get purge -y --auto-remove $buildDeps

6.1.3、COPY:复制文本

COPY <源路径>... <目标路径>
COPY ["<源路径1>",... "<目标路径>"]
<源路径> 可以是多个、以及使用通配符,通配符规则满足Go的filepath.Match 规则,如:COPY hom* /mydir/    COPY hom?.txt /mydir/
<目标路径>使用 COPY 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。

6.1.4、ADD:高级复制文件

ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /
<源路径> 可以是一个 URL ,下载后的文件权限自动设置为 600 。

6.1.5、CMD:容器启动命令

shell 格式: CMD <命令>
exec 格式: CMD ["可执行文件", "参数1", "参数2"...]

CMD ["nginx", "-g", "daemon off;"]

6.1.6、ENTRYPOINT:入口点

同CMD,指定容器启动程序及参数。
通过--entrypoint 参数在运行时替换。

用例一:使用CMD要在运行时重新写命令才能追加运行参数,ENTRYPOINT则可以运行时接受新参数。
示例:
FROM ubuntu:16.04
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT [ "curl", "-s", "http://ip.cn" ]

追加-i参数
$ docker run myip -i

6.1.7、ENV:设置环境变量

在其他指令中可以直接引用ENV设置的环境变量

ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...
示例:
ENV VERSION=1.0 DEBUG=on NAME="Happy Feet"

6.1.8、ARG:构建参数

与ENV不同的是,容器运行时不会存在这些环境变量。
可以用 docker build --build-arg <参数名>=<值> 来覆盖。

6.1.9、VOLUME:定义匿名卷

VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>

6.1.10、EXPOSE:暴露端口

EXPOSE <端口1> [<端口2>...] 
EXPOSE :EXPOSE 仅仅是声明容器打算使用什么端口而已,并不会自动在宿主进行端口映射。

6.1.11、WORKDIR:指定工作目录

WORKDIR <工作目录路径>
RUN cd /app
RUN echo "hello" > world.txt
两次run不在一个环境内,可以使用WORKDIR。

6.1.12、USER:指定当前用户

这个用户必须是事先建立好的,否则无法切换。
USER <用户名>

6.1.13、HEALTHCHECK:健康检查

HEALTHCHECK [选项] CMD <命令> :设置检查容器健康状况的命令
HEALTHCHECK NONE :如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令

HEALTHCHECK 支持下列选项:
    --interval=<间隔> :两次健康检查的间隔,默认为 30 秒;
    --timeout=<时长> :健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认 30 秒;
    --retries=<次数> :当连续失败指定次数后,则将容器状态视为 unhealthy ,默认 3次。

示例
FROM nginx
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
HEALTHCHECK --interval=5s --timeout=3s \
CMD curl -fs http://localhost/ || exit 1

6.2、创建镜像

​ 以springboot项目(docker-demo)为例项目地址:https://github.com/JianJang2017/docker-demo.git,创建镜像。

Dockerfile文件内容如下:

FROM java:8
MAINTAINER JianJang
LABEL name="docker-demo" version="1.0.0" author="JianJang"
VOLUME /tmp
ADD target/docker-demo.jar /docker-demo.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker-demo.jar"]
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 8080

6.2.1、创建步骤

  1. 拉取代码
  2. maven项目打包
  3. 进入项目根目录可以看到对应的Dockerfile文件
  4. 执行构建命令进行构建

    docker build -t springboot/docker-demo .
  5. 查看镜像信息

    docker images;

    image-20200718231136759

  6. 启动容器

    docker run -d -p 8080:8080 --name docker-demo springboot/docker-demo
  7. 访问验证

    curl  localhost:8080/docker/index.do

6.3、镜像上传仓库

6.3.1、创建镜像仓库

首先我们要在阿里云上创建自己的仓库。例如我的仓库如下图所示,然后我们需要创建本地标签。

image-20200719120231866

6.3.2、账号登录

使用docker login 命令登录https://cr.console.aliyun.com/repository/cn-shanghai/的账号,然后输入账号及密码即可,如下图所示

image-20200719115402510

6.3.3、本地标签并上传

在上传之前,先给本地镜像打个tag标签,相当于重新复制镜像并重命名为docker账户名/仓库名称。

语法:docker tag 本地镜像:tag docker账号/docker仓库:tag

docker tag springboot/docker-demo:latest registry.cn-shanghai.aliyuncs.com/jianjang/springboot-docker:v1

查看镜像

docker images

image-20200719112845156

上传镜像

docker push registry.cn-shanghai.aliyuncs.com/jianjang/springboot-docker:v1

上传成功后可以在阿里云的容器镜像服务的控制台中看到对应的镜像信息,如下图:

image-20200719164624405

拉取镜像

##拉取镜像
docker pull registry.cn-shanghai.aliyuncs.com/jianjang/springboot-docker:v1
##启动容器
docker run -d -p 8080:8080 --name docker-demo registry.cn-shanghai.aliyuncs.com/jianjang/springboot-docker:v1
##查看容器
docker ps 
##验证
curl localhost:8080/docker/index.do

6.4、通过maven插件创建镜像

插件名称为dockerfile-maven-plugin,配合Dockfile文件使用,Dockerfile存放目录和项目根目录下,即和pom.xml在相同目录下。直接在项目的pom.xml中进行配置即可,配置示例如下:

<build>
        <finalName>docker-demo</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
        <!--插件-->
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
          <!-- 对应阿里云中的仓库路径-->
                    <repository>registry.cn-shanghai.aliyuncs.com/zhangjian_sh/docker-demo</repository>
                    <tag>${project.version}</tag>
          <!--阿里云镜像仓库账号及密码-->
                    <username>username</username>
                    <password>123456</password>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

Dockerfile内容

FROM java:8
MAINTAINER JianJang
LABEL name="docker-demo" version="1.0.0" author="JianJang"
VOLUME /tmp
ADD ${JAR_FILE} /docker-demo.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker-demo.jar"]
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 8080

配置完成后就可以在maven视图通通过插件进行build->tag->push等操作了。如下图:

image-20200719164848658

7、Docker应用示例

7.1、在Docker中启动Redis服务

  • 拉取镜像

    docker pull redis
  • 启动服务

    docker run  -d -p 6379:6379 --name myredis redis

7.2、在Docker中启动Mysql服务

  • 拉取镜像

    docker pull mysql
  • 启动服务

    docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=JianJang123 mysql
  • 进入服务后台

    语法: docker exec -it 容器名称 bash。容器后台就是容器启动所依赖的平台内部。

    docker exec -it mysql-test bash
  • 登录mysql

    mysql -uroot -pjianjang123

image-20200719170456153

8、镜像仓库

​ 镜像仓库顾名思义就是镜像的仓库,用于存放镜像对应的发布版本信息,就像maven仓库一样。我们可以在仓库里找到三方或者官方提供的公开的镜像信息。

Docker Hub作为Docker默认官方公共镜像,如果想要自己搭建私有镜像残酷,官方也提供Registry镜像,使得我们搭建私有仓库变得非常简单。

  所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。下面我们来说看看如何搭建私有仓库。

8.1、搭建私有仓库

8.1.1、通过Registry镜像搭建

  • 拉取镜像

    docker pull registry
  • 启动服务

    docker run -d -v /edc/images/registry:/var/lib/registry -p 5000:5000 --restart=always --name my-registry registry
  • 配置仓库

    为啥配置,因为有配置https所以要授信。

    修改配置文件 vim /etc/docker/daemon.json 或者修改docker-desktop的设置如下:

    { 
        "insecure-registries" : [ "your-server-ip:5000" ] 
    }
  • 上传镜像

    ##打tag
    docker tag your-image-name:tagname your-server-ip:5000/your-image-name:tagname
    ##上传
    docker push your-registry-server-ip:5000/your-image-name:tagname
  • 拉取镜像

    docker pull your-server-ip:5000/your-image-name:tagname
  • 查看镜像

    curl http://your-server-ip:5000/v2/_catalog

8.1.2、Docker Hub公共镜像仓库

​ 到docker hub的官网去注册一个账号即可,网址:https://hub.docker.com/。国内的也可以到阿里云注册响应的服务。

8.1.3、企业级镜像仓库Harbor

​ Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址:https://github.com/goharbor/harbor

 img

  Harbor作为一个企业级私有Registry服务器,提供了更好的性能和安全,提升了用户使用Registry构建和运行环境传输镜像的效率。虽然Harbor和Registry都是私有镜像仓库的选择,但是Harbor的企业级特性更强,因此也是更多企业级用户的选择。

  Harbor实现了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制,也常常和K8S中的namespace结合使用。此外,Harbor还提供了图形化的管理界面,我们可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

8.1.3.1、Harbor安装

前提条件是先安装docker和docker-compose,例如我在腾讯云的centos 7.5上安装,相关命令如下:

  • 安装docker
yum install docker   # 安装docker
...
systemctl start docker   # 运行docker服务
  • 安装docker-compose
yum install docker-compose
  • 下载harbor安装包

    在服务器上通过如下命令下载,这里我安装的是harbor-offline-installer-v1.10.4.tgz版本,由于网络原因,可能下载速度比较慢,也可以到我的百度网盘中下载(链接: https://pan.baidu.com/s/1IDXHtwyPndxEAS8UkwYYVg 提取码: b7a3)

wget https://github.com/goharbor/harbor/releases/download/v1.10.4/harbor-offline-installer-v1.10.4.tgz
  • 安装harbor

    解压后,修改配置文件中的hostname:A.B.C.D(ip或者域名)和port 默认为80(此处的是对外服务端口),同时注释掉https相关的属性。如下图:

###解压,默认到harbor目录
tar -xvzf harbor-offline-installer-v1.10.4.tgz
###修改配置harbor/harbor.yml
vi harbor/harbor.yml
##开始安装
sh harbor/install.sh
###看到如下内容说明安装成功
✔ ----Harbor has been installed and started successfully.----

image-20200725123553210

  • 访问harbor的portal页面

    http://ip:port/即可进入ui页面如下:默认账号:admin/Harbor12345

    image-20200725124635725

  • 创建项目

    登录harbor创建项目jiangjang,同时创建用户zhangjian_sh。并将其设置为项目管理员。相关操作略。可参考如下文章内容

    https://www.yht7.com/news/34086

  • 上传镜像到仓库

    • 本地docker 配置

    配置harbor镜像仓库地址注册(docker-desktop配置如下图)。否则不会被授信。如果不是desktop版本修改 /etc/docker/daemon.json文件加入如下配置,配置完成后重启docker 。

    {
      "insecure-registries":[
        "123.207.206.153:1180"
      ]
    }

    image-20200725130827028

    • 打TAG

    此处以将本地仓库的java 8上传到harbor仓库为例

    docker tag java:8 123.207.206.153:1180/jianjang/java:8

    image-20200725131612940

    • 推送到仓库

      推送之前需要先登录到远程仓库

      docker login  123.207.206.153:1180

      推送镜像到仓库

      docker push 123.207.206.153:1180/jianjang/java:8

      image-20200725132810271

    • 查看镜像

      image-20200725133408204

9、参考资源列表

10、总结

​ 至此,本教程就是终结了,主要针对基础的使用做了部分讲解。对于应用方面说明的比较少。后续如果有时间,会增加企业级实战相关的教程。

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
关系型数据库 MySQL Java
Docker Compose详细教程(从入门到放弃)
Docker Compose详细教程(从入门到放弃)
234 0
|
2月前
|
Oracle 关系型数据库 数据库
|
4月前
|
关系型数据库 MySQL 数据库
百度搜索:蓝易云【【Docker】Docker部署Mysql并设置数据持久化教程】
通过以上步骤,您已经成功地在Docker中部署了MySQL,并设置了数据持久化,确保数据在容器重新启动或迁移时得以保留。
53 0
|
4月前
|
安全 应用服务中间件 nginx
百度搜索:蓝易云【使用Debian、Docker和Nginx部署Web应用教程】
这些是在Debian上使用Docker和Nginx部署Web应用的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
47 0
|
4月前
|
Docker 容器
百度搜索:蓝易云【docker容器/etc/hosts文件修改教程】
现在,你已经成功修改了Docker容器中的 `/etc/hosts`文件,添加了主机名和IP地址的映射关系。这使得在容器内部可以使用指定的主机名来访问相应的IP地址。请确保在修改 `/etc/hosts`文件时小心,避免错误的配置导致意外的问题发生。
121 0
|
4月前
|
大数据 数据管理 Docker
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
273 0
|
24天前
|
关系型数据库 MySQL 数据库
docker 安装mysql(踩坑踩得想哭 详细解决教程)ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using pa
docker 安装mysql(踩坑踩得想哭 详细解决教程)ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using pa
30 1
|
24天前
|
Ubuntu Docker 索引
ubuntu 20.04 安装docker教程和安装中遇到的问题解决方案(超详细 附加图文教程)
ubuntu 20.04 安装docker教程和安装中遇到的问题解决方案(超详细 附加图文教程)
50 0
|
1月前
|
Linux Docker 容器
阿里云安装docker教程
阿里云安装docker教程
65 0
|
1月前
|
Shell 网络安全 开发工具
docker 安装 gitlab 教程详解
docker 安装 gitlab 教程详解
52 0