docker命令记录

先记录用到的命令,后续再详解

确保docker已经安装并且运行
docker --version
docker info
编写Dockerfile文件 这个和jar放在一起,然后进入到这个目录下去执行
docker build -t fqgw-java-jar .   // -t后面是镜像名称
运行docker容器
docker run --name fqgw-java-jar-container -d fqgw-java-jar
//*****
docker run -d --network host --name fqgw-java-jar-container fqgw-java-jar

--name后面是指定的容器名称 -d是让容器后台运行  然后就是镜像名称
查看容器状态
docker ps
查看jar运行日志 相当于控制台输出
docker logs fqgw-java-jar-container

停止和删除容器
docker stop fqgw-java-jar-container
docker rm fqgw-java-jar-container

清理镜像
docker rmi fqgw-java-jar

1. Docker 的基本概念

  • 镜像(Image):Docker 镜像是一个轻量级的、不可变的操作系统文件系统和应用程序文件的组合。镜像是容器的基础,可以从 Docker Hub 或其他镜像仓库拉取,或者根据自己的需求创建。

  • 容器(Container):容器是镜像的运行实例,它是一个轻量级的、独立的可执行软件包,包含运行应用程序所需的一切。容器是独立的,相互隔离,但可以共享操作系统内核。

  • Dockerfile:Dockerfile 是一个脚本文件,定义了如何构建一个 Docker 镜像。它包含了一系列指令(如安装软件、复制文件、设置环境变量等)。

  • Docker Hub:Docker Hub 是一个云端的镜像仓库,开发者可以在此发布和共享 Docker 镜像。也可以从 Docker Hub 拉取官方或社区镜像

2. Docker 的安装

  • Ubuntu 安装步骤:

    # 更新现有包列表
    sudo apt-get update
    
    # 安装 Docker 的依赖包
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    
    直接去安装ubuntu上的docker
    -------------------------------------------------弃用---------------------------
    # 添加 Docker 官方 GPG 密钥
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
    # 1. 默认使用国外源,非常非常非常慢!
    $ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    # 2. 推荐使用国内源,顺畅!
    $ sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
    
    # 添加 Docker 官方的 APT 源
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
    # 1. 默认使用国外源,非常非常非常慢!
    $ sudo add-apt-repository \
           "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
           $(lsb_release -cs) \
           stable"
    # 2. 推荐使用国内源,顺畅!
    $ sudo add-apt-repository \
          "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
          $(lsb_release -cs) \
          stable"	
    
    -------------------------------------------------弃用---------------------------
    # 再次更新包列表
    sudo apt-get update
    
    # 安装 Docker
    sudo apt-get install docker-ce
    
    # 验证 Docker 是否安装成功
    sudo systemctl status docker
    

    通过 docker --version 检查 Docker 的版本。注意:添加GPG秘钥和APT源本质上就是为了验证是不是安全渠道下载的docker。

3. Docker 的基本操作

3.1 拉取镜像

要运行一个容器,首先需要从 Docker Hub 拉取镜像。以拉取 nginx 镜像为例:

docker pull nginx
3.2 运行容器

拉取镜像后,你可以基于该镜像运行容器。以下命令将启动一个 nginx 容器:

docker run --name mynginx -d -p 8080:80 nginx
  • --name mynginx:指定容器的名称。
  • -d:让容器在后台运行。
  • -p 8080:80:将主机的 8080 端口映射到容器的 80 端口。
3.3 列出容器

查看所有运行中的容器:

docker ps

查看所有(包括停止的)容器:

docker ps -a
3.4 停止和删除容器

停止容器:

docker stop mynginx

删除容器:

docker rm mynginx
3.5 删除镜像

如果不再需要镜像,可以将其删除:

docker rmi nginx

4. Dockerfile 的使用

如果需要创建一个自定义镜像,可以编写一个 Dockerfile。例如,假设我们有一个简单的 Java 应用程序(app.jar),我们可以创建一个 Dockerfile 如下:

# 使用官方 OpenJDK 作为基础镜像 
FROM openjdk:8-jre-slim 


# 更换 apk 镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 更新软件包列表并安装所需的字体
RUN apk update && apk add --no-cache ttf-dejavu

# 将 JAR 文件复制到镜像中的 /app 目录 
COPY app.jar /app/app.jar 

# 设置工作目录 
WORKDIR /app 


# 运行 JAR 文件
CMD ["java", "-jar", "app.jar"]

然后,使用以下命令构建镜像:

docker build -t my-java-app .

构建完成后,使用以下命令运行容器:

docker run --name my-java-container -d my-java-app


--name后面是指定的容器名称 -d是让容器后台运行  然后就是镜像名称

总结
  • apk 镜像源:用于更换Alpine Linux系统包管理工具 apk 的下载源,以加快包的安装速度。
  • daemon.json 镜像加速源:用于更换Docker拉取镜像时的下载源,加快Docker镜像的下载速度。

这两个配置虽然都是关于镜像源的,但它们作用在不同的层面,一个是操作系统包管理的源,另一个是Docker镜像拉取的源。

5. Docker Compose(未研究)

Docker Compose 是 Docker 的一个工具,用于定义和管理多个容器的应用程序。它通过 docker-compose.yml 文件来配置应用程序的服务。

以下是一个简单的 docker-compose.yml 文件示例:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  app:
    image: my-java-app
    ports:
      - "8081:8080"

使用 docker-compose up 命令启动所有服务:

docker-compose up -d

6. Docker 网络和数据卷

  • 网络:Docker 容器默认处于隔离的网络中,可以通过 Docker 网络模式或 Docker Compose 来配置容器之间的网络通信。

  • 数据卷(Volumes):用于在容器和主机之间持久化数据。创建数据卷并将其挂载到容器中,可以确保数据不会因容器的删除而丢失。

创建并使用数据卷:

docker volume create mydata
docker run -d --name myapp -v mydata:/app/data my-java-app
总结

因为docker网络是隔离的,这也就是我一开始命令中运行容器时为什么要加    --network host
使用 --network host 选项会让容器使用主机的网络堆栈。这意味着容器内的应用程序将与主机共享网络环境,使用主机的IP地址和端口。

除了在启动命令上加入 --network host除外,其他办法来设置

7.在Docker中配置和管理网络

1. 默认的 Bridge 模式

当运行一个容器时,Docker默认会将其连接到一个名为 bridge 的虚拟网络中。

运行容器时使用默认的桥接网络:

docker run -d --name my_container my_image

在这种模式下,容器有自己独立的网络命名空间,你可以通过 docker inspect my_container 查看容器的IP地址。

2. Host 模式(正在使用)

使用 --network host 参数运行容器,这将使容器共享主机的网络环境。容器内的服务将直接绑定到主机的网络接口。

运行容器时使用主机网络:

docker run -d --network host --name my_container my_image

在这种模式下,主机和容器共享同一个网络命名空间,容器的服务可以通过主机的IP地址直接访问。

3. None 模式

如果希望完全隔离容器的网络,可以使用 --network none,这样容器将没有网络接口。

运行容器时使用无网络模式:

docker run -d --network none --name my_container my_image
4. 自定义 Bridge 网络

你可以创建一个自定义的桥接网络,允许多个容器加入同一个网络,并通过容器名称来相互通信。

创建自定义桥接网络:

docker network create my_bridge_network

在自定义网络中运行容器:

docker run -d --network my_bridge_network --name my_container_1 my_image docker run -d --network my_bridge_network --name my_container_2 my_image

在这个网络中,my_container_1 可以通过 my_container_2:port 直接访问 my_container_2

5. Overlay 网络

Overlay网络通常用于跨多个主机的分布式应用程序,例如在Docker Swarm或Kubernetes中。

在Docker Swarm中创建Overlay网络:

docker network create --driver overlay my_overlay_network

在Overlay网络中运行容器:

docker service create --name my_service --network my_overlay_network my_image
6. Docker Compose 配置网络

通过Docker Compose,可以在 docker-compose.yml 文件中定义多个服务,并指定它们的网络。

示例 docker-compose.yml 文件:

version: '3'
services:
  web:
    image: nginx
    networks:
      - my_network
  app:
    image: my_app_image
    networks:
      - my_network

networks:
  my_network:
    driver: bridge

启动Compose应用:

docker-compose up -d

在这个例子中,webapp 服务将连接到 my_network 网络中,并可以通过服务名称相互通信。

7. 配置Docker Daemon使用国内镜像源

为了加速从Docker Hub下载镜像,可以配置 daemon.json 文件,指定国内的镜像源,例如阿里云。

编辑或创建 /etc/docker/daemon.json

--------------------------9.4弃用------------------------
{
  "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
}
--------------------------------------------------------
{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}

重启Docker服务:

sudo systemctl restart docker

这样配置后,Docker会优先从配置的镜像源下载镜像,大大加快下载速度。

------------------------------------------总结到这里2024.8.30---------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值