Docker快速入门(学习笔记-黑马docker)

Docker:一个用来快速构建,运行,管理应用的工具

1.旧版本卸载

如果存在旧版本,则需要先行卸载旧版本

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

2.配置Docker的yum库

2.1安装yum工具

yum install -y yum-utils

2.2成功后,执行下列命令,配置Docker的yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.安装Docker

执行下列命令

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4.启动Docker

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker
 
# 重启
systemctl restart docker
 
# 设置开机自启
systemctl enable docker

5.查看是否正常运行

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

6.配置镜像加速(阿里云)

# 创建目录
mkdir -p /etc/docker
 
# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
 
# 重新加载配置
systemctl daemon-reload
 
# 重启Docker
systemctl restart docker

7.入门案例

使用Docker部署mysql

docker run -d \  # 使用 `docker run` 命令以分离模式(后台运行)启动一个新的容器
  --name mysql \  # 为容器指定一个名称,这里是 `mysql`
  -p 3306:3306 \  # 将容器内部的 3306 端口映射到宿主机的 3306 端口上,通常用于数据库服务访问
  -e TZ=Asia/Shanghai \  # 设置环境变量 `TZ`(时区)为 `Asia/Shanghai`,确保容器内部时间与上海时间一致
  -e MYSQL_ROOT_PASSWORD=123  # 设置环境变量 `MYSQL_ROOT_PASSWORD`,这是 MySQL 服务的 root 用户的密码,此例中设置为 `123`
  mysql  # Docker 镜像的名称。这告诉 Docker 你想要基于哪个镜像来创建和启动容器,在未指定TAG的情况下,默认是最新版本,也就是mysql:latest

9.Docker基础

9.1常见命令

命令说明
docker pull拉取镜像
docker push推送镜像到DockerRegistry
docker images查看本地镜像
docker rmi删除本地镜像
docker run创建并运行容器(不能重复创建)
docker stop停止指定容器
docker start启动指定容器
docker restart重启启动容器
docker rm删除指定容器
docker ps查看容器
docker logs查看容器运行日志
docker exec进入容器
docker save保存镜像到本地压缩文件
docker load加载本地压缩文件到镜像
docker inspect查看容器详细信息

9.2docker run命令中常见参数

-d:让容器后台运行

--name:给容器命名

-e:环境变量

-p:宿主机端口映射到容器内端口

镜像名称结构:Repository:TAG

10.Docker数据卷

数据卷(volume):是一个虚拟目录,是容器内目录于宿主机目录之间映射的桥梁

使用方法:在执行docker run命令时,使用-v 数据卷:容器内目录可以完成数据卷挂载

数据卷其他常见命令:

docker volume ls:查看数据卷

docker volume rm:删除数据卷

docker volume inspect:查看数据卷详情

docker volume prune:删除未使用的数据卷

11.本地目录挂载

使用方法:在执行docker run命令时,使用-v 本地目录:容器内目录可以完成本地目录挂载

本地目录必须以"/"或"./"开头,如果直接以名称开头,会被识别为数据卷而非本地目录,例如:

-v mysql:/var/lib/mysql会被识别为一个数据卷叫mysql

-v ./mysql:/var/lib/mysql会被识别为当前目录下的mysql目录

12.自定义镜像

镜像就是包含了应用程序,程序运行的系统函数库,运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。

镜像结构:

入口(Entrypoint):镜像运行入口,一般是程序启动的脚本和参数

层(Layer):添加安装包,依赖,配置等,每次操作都形成新的一层

基础镜像(BaseImage):应用依赖的系统函数库,环境,配置,文件等

13.Dockerfile

Dockerfile就是一个文本文件,其中包含一个个的指令,用指令来说明要执行说明操作来构建镜像。将来Docker可以更具Dockerfile帮我们构建镜像。常见指令如下:

指令说明示例
FROM指定基础镜像FROM centos:6
ENV设置环境变量,可在后面指令使用ENV key value
COPY拷贝本地文件到镜像的指定目录COPY ./test.tar.gz /tmp
RUN执行Linux的shell命令,一般是安装过程的命令RUN tar -zxvf /tmp/test.tar.gz && EXPORTS path=/tmp/test:$path
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar

当我们编写好了Dockerfile,可以利用下面命令来构建镜像:

docker build -t myimage:1.0 .

-t:是给镜像起名,格式依然是repository:tag的格式,不指定tag时,默认为latest

.:是指定Dockerfile所在目录,如果就在当前目录,则指定为"."

14.Docker网络

默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上:

15.自定义网络

加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作命令如下:

命令说明
docker network create创建一个网络
docker network ls查看所有网络
docker network rm删除指定网络
docker network prune清除未使用的网络
docker network connect使指定容器连接加入某网络
docker network disconnect使指定容器连接离开某网络
docker network inspect查看网络详细信息

16.使用docker部署项目

(1)先将java项目在idea或者手动使用命令mvn package,,将项目打包成jar

(2)然后手动编写dockerfile文件,逻辑参考如下:

# 使用官方Java运行环境作为基础镜像
FROM openjdk:11-jre-slim

# (可选) 设置工作目录,也就是应用运行的目录
WORKDIR /app

# 将构建产物的jar文件复制到容器内
COPY target/my-application.jar /app/my-application.jar

# 声明容器对外暴露的端口号,应与应用配置的端口号相匹配
EXPOSE 8080

# 指定容器启动时执行的命令
CMD ["java", "-jar", "/app/my-application.jar"]

(3)将jar和dockerfile文件都上传至服务器

(4)在其文件目录下,使用命令docker build -t 镜像名 . 来创建镜像

(5)docker run -d --name 容器名 -p 端口映射 --network 网络名 镜像名

17.DockerCompose

Docker Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。

使用方式:docker compose [OPTIONS] [COMMAND]

类型参数或指令说明
Option-f指定compose文件的路径和名称
-p指定project名称
Comandsup创建并启动所有service容器
down停止并移除所有容器,网络
ps列出所有启动的容器
logs查看指定容器的日志
stop停止容器
start启动容器
restart重启容器
top查看运行的进程
exec在指定的运行容器中执行命令

18.发布镜像

发布 Docker 镜像通常意味着将其推送到 Docker Hub 或其他 Docker 镜像仓库(例如 GitHub Packages, GitLab Container Registry, Amazon Elastic Container Registry (ECR), Google Container Registry (GCR) 等)

步骤 1: 创建 Docker Hub 账户(如果还没有)

如果你还没有 Docker Hub 账户,你需要先在 Docker Hub 上注册一个。

步骤 2: 登录到 Docker Hub

在你的终端或命令行界面,使用 docker login 命令登录到 Docker Hub:

docker login

输入你的 Docker Hub 用户名和密码。成功登录后,你就可以推送镜像到你的 Docker Hub 仓库了。

步骤 3: 标记你的 Docker 镜像

在推送镜像之前,你需要为它添加一个标签(tag),这个标签应该包含你的 Docker Hub 用户名、仓库名和可选的标签。

docker tag 你的镜像名字:你发布的版本(自定义) docker网页端的用户名/镜像命名:标签

步骤 4: 推送镜像到 Docker Hub

现在,你可以使用 docker push 命令将镜像推送到 Docker Hub:

docker push docker网页端的用户名/镜像命名:标签

这会将你的镜像上传到 Docker Hub。根据你的网络速度和镜像大小,这可能需要一些时间。

步骤 5: 验证

登录到你的 Docker Hub 账户,检查你的仓库列表,确认你的镜像已经上传。

19.将镜像到处为压缩包

1. 使用 docker save 保存镜像

首先,使用 docker save 命令导出镜像到一个 tar 文件。比如,如果你想保存名为 try/test/newtest:latest 的镜像,可以运行:

docker save try/test/newtest:latest > myimage.tar

这会创建一个名为 myimage.tar 的文件,其中包含了你指定的 Docker 镜像。

2. 压缩 tar 文件

接下来,使用 gzip(或其他压缩工具)来压缩这个 tar 文件。运行:

gzip myimage.tar

这会生成一个名为 myimage.tar.gz 的压缩文件,并且原来的 myimage.tar 文件会被替换。现在,你的 Docker 镜像已经被打包成了一个压缩包,可以更方便地进行传输或存储。

3. 分享或存储压缩包

现在,你可以将这个压缩包 myimage.tar.gz 通过网络分享给其他人,或者存储在安全的位置以备未来使用。

4. 加载镜像(可选)

如果你或其他人需要从这个压缩包中恢复 Docker 镜像,首先需要解压缩这个文件,然后使用 docker load 命令加载镜像。解压缩并加载镜像的命令如下:

gunzip -c myimage.tar.gz | docker load

或者,如果你首先解压缩文件:

gunzip myimage.tar.gz docker load < myimage.tar

这样,镜像就会被加载到 Docker 中,可以像使用任何其他 Docker 镜像一样使用它了。

20.Docker压缩包部署

步骤 1: 加载镜像到 Docker

首先,如果你的镜像已经被打包成 .tar.gz 文件,你需要解压并加载它到 Docker 中。这里假设你的压缩文件名为 myimage.tar.gz

gunzip -c myimage.tar.gz | docker load

或者,如果你首先解压缩文件:

gunzip myimage.tar.gz docker load < myimage.tar

这将把镜像加载到你的 Docker 安装中,现在你可以通过 docker images 命令查看它。

步骤 2: 准备 docker-compose.yml

接下来,创建一个 docker-compose.yml 文件来定义如何运行你的容器。这个文件应该包括使用你刚加载的镜像以及任何相关配置,如端口映射、卷挂载或环境变量等。

假设你的镜像名为 myapp:latest,一个简单的 docker-compose.yml 示例可能如下所示:

version: '3' 
services: 
    myapp: 
        image: myapp:latest 
        ports: 
            - "8080:8080" 
        environment:
             - MY_ENV_VAR=value

这个配置定义了一个服务 myapp,使用 myapp:latest 镜像,并将容器的 8080 端口映射到宿主机的 8080 端口。你可以根据需要调整这个文件。

步骤 3: 使用 docker-compose 启动服务

确保你的 docker-compose.yml 文件准备好后,你可以使用 docker-compose up 命令来启动服务:

docker-compose up -d

这个命令会根据 docker-compose.yml 文件中的定义来启动你的应用容器。-d 参数意味着容器会在后台运行。

步骤 4: 验证运行

使用 docker-compose ps 查看你的服务状态,确保它们按预期运行。

docker-compose ps

这样,你就完成了从压缩包恢复镜像,并使用 docker-compose 构建和启动容器的过程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值