Docker 的安装与使用

ops/2024/11/20 1:03:36/

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.ppmy.cn/ops/135112.html

相关文章

ks 小程序sig3

前言 搞了app版的快手之后 (被风控麻了) 于是试下vx小程序版的 抓包调试 小程序抓包问题 网上很多教程, github也有开源的工具代码 自行搜索 因为我们需要调试代码,所以就用了下开源的工具 (可以用chrome的F12功能&a…

k-近邻算法(K-Nearest Neighbors, KNN)详解:机器学习中的经典算法

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

Flutter网络通信-封装Dio

前言 dio 是一个强大的 Dart HTTP 请求库,支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 Dio的pub地址为:dio | Dart package 封装要求 能够使用get、post、put、patch、delete、…

delphi fmx android 离线人脸识别

搜遍全网都没有找到delphi android 能用的 离线人脸识别,无需注册什么开发者 有这方面需求的可以用fsdk 这边用的luxand.FSDK8.0 android下的注册号要自己找下 1,用老猫的工具将android 下的sdk,FSDK.java 编译成FSDK.jar 老猫的工具 2,用上面的工具将FSDK.jar 生成de…

算力100问☞第6问:评估算力的指标有哪些?

评估算力,就像是给计算机做体检,我们需要检查几个关键的“健康指标”。下面是一些重要的算力评估指标,我会用通俗易懂的话来解释它们: 1、运算性能指标 浮点运算性能(FLOPS)和整数运算性能:这…

网络安全、Web安全、渗透测试之笔经面经总结(三)

本篇文章涉及的知识点有如下几方面: 1.什么是WebShell? 2.什么是网络钓鱼? 3.你获取网络安全知识途径有哪些? 4.什么是CC攻击? 5.Web服务器被入侵后,怎样进行排查? 6.dll文件是什么意思,有什么…

Redis高可用-Cluster(集群)

Redis cluster cluster 为无中心,分布式 sharding,高可用技术架构。 在哨兵 sentinel 机制中,可以解决 redis 高可用的问题,即当 master 故障后可以自动将 slave 提升为 master 从而可以保证 redis 服务的正常使用。 但是无法解…

【Golang】——Gin 框架简介与安装

文章目录 1. Gin 框架概述1.1 什么是 Gin 框架?1.2 为什么选择 Gin?1.3 使用场景 2. 安装 Go 与 Gin 框架2.1 安装 Go 语言环境2.2 初始化 Go 项目2.3 安装 Gin 框架 3. 编写第一个 Gin 应用3.1 Gin 最小化示例代码代码解读3.2 运行程序3.3 测试服务 4. …