当前位置: 首页 > news >正文

Docker 的安装与使用

Docker 的安装

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。
Docker CE 的安装请参考官方文档,我们这里以CentOS为例:
1、Docker 要求 CentOS 系统的内核版本高于 3.10
通过 uname -r 命令查看你当前的内核版本

uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

yum -y update

3、卸载旧版本(如果安装过旧版本的话)

sudo yum remove -y docker*

4、安装需要的软件包, yum-util 提供 yum-config-manager 功能

yum install -y yum-utils

5、设置yum源,并更新 yum 的包索引

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

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

在这里插入图片描述
7、安装docker

yum install -y docker-ce-3:26.1.4-1.el7.x86_64  # 指定安装版本

8、启动并加入开机启动

systemctl start docker 
systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

docker version

10、卸载docker

yum remove -y docker*
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker

Docker常用命令

镜像相关命令

1、列出镜像

docker image ls

2、拉取镜像(会从 Docker Hub 的仓库中下载镜像)

docker pull 镜像名称[:tag]
docker pull java:8

3、删除本地镜像

docker image rm 镜像名或镜像id

容器相关命令

1、运行容器
docker run [option] 镜像名 [向启动容器中传入的命令]

常用可选参数说明:
-d:代表后台运行容器
-p 宿主机端口:容器端口:为了映射当前Linux的端口和容器的端口
--name  为创建的容器命名
-e  为容器设置环境变量
--network=host  表示将主机的网络环境映射到容器中,容器的网络与主机相同

2、查看容器

docker ps [-a]
-a:查看全部的容器,包括没有运行

3、 查看容器日志

docker logs -f 容器id

4、 进入容器内容部

docker exec -it 容器id /bin/bash

5、容器与宿主机相互复制文件

# 将宿主机的文件复制到容器内部
docker cp 文件名称 容器id:容器内部路径
# 从容器里面拷贝文件到宿主机
docker cp 容器id:文件在容器内的路径  宿主机路径 

6、启动、停止容器

# 启动停止的容器
docker start 容器id# 停止指定的容器
docker stop 容器id
# 停止全部容器
docker stop $(docker ps -qa)# 删除指定容器(删除容器前,需要先停止容器)
docker rm 容器id

7、将容器保存为镜像

docker commit 容器名 镜像名

8、镜像备份与迁移

可以通过save命令将镜像打包成文件,拷贝给别人使用
docker save -o 保存的文件名 镜像名
docker save -o ./ubuntu.tar ubuntu在拿到镜像文件后,可以通过load方法,将镜像加载到本地
docker load -i ./ubuntu.tar

使用Dockerfile构建微服务镜像

Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节
如下为Dockerfile的语言:

from: 指定当前自定义镜像依赖的环境
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 声明镜像的默认工作目录
run: 执行的命令,可以编写多个
cmd: 需要执行的命令(在workdir下执行的,cmd可以写多个,只以最后一个为准)

目标:将 5G定制网的微服务,打包成1个镜像文件

1、在微服务的目录新建一个 Dockerfile 的文件,在里面增加如下内容:
在这里插入图片描述

# 使用 jdk8 作为基础镜像
FROM jdk8:8u51# 设置工作目录
WORKDIR /app# 复制所有微服务的JAR文件到容器中
COPY ./cyberwing-common/cyberwing-common.jar /app/cyberwing-common/
COPY ./cyberwing-common/application.yml /app/cyberwing-common/
COPY ./capitek-upms/application-dev.yml /app/capitek-upms/
COPY ./capitek-upms/upms.jar /app/capitek-upms/# 暴露端口
EXPOSE 8120 8102ENV JAVA_OPTS "-Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/ -Dfile.encoding=utf-8"ENTRYPOINT java ${JAVA_OPTS} -jar /app/cyberwing-common/cyberwing-common.jar --spring.config.location=/app/cyberwing-common/application.yml & \java ${JAVA_OPTS} -jar /app/capitek-upms/upms.jar --spring.config.location=/app/capitek-upms/application-dev.yml --jasypt.encryptor.password=capitekor & \wait

2、在Dockerfile所在路径执行以下命令构建镜像:

docker build -t my-app .
# -t 指定镜像名字,(.)表示Dockerfile文件所在路径

3、运行容器

docker run -d -p 18899:8899 --name my-app my-app

4、如果希望在运行容器时覆盖环境变量的值,可以在 docker run 命令中使用 -e 标志来传递环境变量
首先改写微服务的配置文件,将配置中统一设置的 Mysql、redis 这些配置项改为 变量 形式
在这里插入图片描述

docker run -d \-p 18120:8120 \-p 18102:8102 \--name my-app \-e DATABASE_URL="172.18.1.212" \-e DATABASE_PORT="3306" \-e DATABASE_NAME="cyberwing_v1.4_zdyfy" \-e DATABASE_USERNAME="ENC(FYthkcvukQtU+nbm+5lCtg==)" \-e DATABASE_PASSWORD="ENC(JUzm26YzVxf8CsmiqLiHAg==)" \my-app

学习文档 1 :
docker 知识点:
www.codezhou.top/article/docker使用#767b25e35ba84a2ba6c00f9f20a9caf1

http://www.lryc.cn/news/484285.html

相关文章:

  • Android Studio 中三方库依赖无法找到的解决方案
  • PGMP练-DAY24
  • 【C++动态规划 最长公共子序列】1035. 不相交的线|1805
  • FFmpeg的基本结构
  • react 受控组件和非受控组件
  • C语言模块化概述
  • WPF 中的视觉层和逻辑层有什么区别?
  • Kafka简单实践
  • JS
  • 【原创】java+ssm+mysql商品库存管理系统(进销存)设计与实现
  • three.js 杂记
  • 基于Hadoop、hive的数仓搭建实践
  • 新的恶意软件活动通过游戏应用程序瞄准 Windows 用户
  • 【Hutool系列】反射工具-ReflectUtil
  • 【操作系统专业课】第二次作业
  • Scala的迭代器
  • (RK3566驱动开发 - 1).pinctrl和gpio子系统
  • css三角制作(二十课)
  • C++_priority_queue(优先级队列)
  • 微信小程序——01开发前的准备和开发工具
  • MySQL 的主从复制数据同步
  • python——面向对象
  • Microsoft 365 Exchange如何设置可信发件IP白名单
  • LM27313典型电路之升压电路
  • 嵌入式面试八股文(七)·#ifndef#define#endif的作用、以及内存分区(全局区、堆区、栈区、代码区)
  • 【弱监督视频异常检测】2024-ESWA-基于扩散的弱监督视频异常检测常态预训练
  • Android 13 实现屏幕熄屏一段时候后关闭 Wi-Fi 和清空多任务列表
  • Elasticsearch磁盘占用大于95%时将所有索引置为只读
  • 删除 git config 保存的密码
  • Springboot环境搭建详解