广州总部电话:020-85564311
广州总部电话:020-85564311

广州网站建设-小程序商城开发-广州小程序开发-企业微信开发公司-网站建设高端品牌-优网科技

20年
互联网应用服务商
请输入搜索关键词
知识库 知识库

优网知识库

探索行业前沿,共享知识宝库

Docker的极简入门知识整理
发布日期:2025-04-22 22:13:21 浏览次数: 903 来源:济南小老虎

背景

容器是十几年前火起来的一个技术.
可以理解为是轻量级的虚拟机解决方案.
他的使用其实很简单.
这里进行一些基本的知识整理.
使用经典的Docker,而不是podman/containerd等.

下载

Linux里面 Anything is file 
Docker已经不是很多操作系统预装的容器管理软件
又因为太平洋的两个大国的一些纷争
所以建议是离线下载与安装.
官方地址:
https://download.docker.com/linux/static/stable/x86_64/
在linux上面下载的方法为:
截止2025.4最新版的容器:
cd /
wget https://download.docker.com/linux/static/stable/x86_64/docker-28.1.0.tgz
tar -zxvf docker-28.1.0.tgz

安装

需要说明 Docker可以理解为是一个 CS架构的软件
dockerd 提供Server服务
docker  提示命令行方式管理

不考虑后台服务的情况下
scp /docker/* /usr/bin 
nohup dockerd & 
docker --version 
显示结果为:
Docker version 28.1.0, build 4d8c241

简单使用-简单分类

docker pull 拉取镜像-类比于克隆虚拟机
docker run  运行镜像-类比于开启虚拟机
docker build 创建镜像-类比自己创建特定配置虚拟机
docker exec  进入容器-类比于远程虚拟机
docker ps    查看容器-虚拟机控制台看多少虚拟机在运行
docker stats 查看容器的使用情况- top 命令
docker rm    删除容器或者是镜像
docker save  将镜像导出
docker load  将镜像导入
docker tag   给镜像打标签

命令介绍

docker pull 
因为境内禁止了 docker hub 的访问
所以建议使用 阿里云进行下载
比如我们下载MySQL的基础镜像
docker pull mysql:8.2.0

Error response from daemon: 
Get "https://registry-1.docker.io/v2/": dial tcp 108.160.167.158:443: 
connect: connection refused
建议使用境内的镜像源

mkdir -p /etc/docker 
cat >/etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
EOF
killall dockerd 
sleep 2
nohup dockerd & 

docker pull mysql:8.3.0 
# 我这边服务器总是失败, 建议是通过docker save和 import的方式进行

一个比较好的镜像网站是: 
https://docker.aityp.com/

命令介绍

docker save && docker load  
1. 境外虚拟机:  最新的mysql LTS版本
docker pull mysql:8.4.5 
2. 查看镜像大小: 
REPOSITORY    TAG         CREATED         SIZE
mysql         8.4.5       2 days ago      776MB
3. 导出
docker save mysql:8.4.5 |gzip >mysql8.4.5.tar.gz 
222M   mysql8.4.5.tar.gz
可以使用 | 管道符号直接压缩,效率较快
4. 导入
将tar.gz文件传输到本地: 
docker load -i mysql8.4.5.tar.gz

镜像数据库运行

创建参数文件:
mkdir -p /mysql3308/mysql
cat >/mysql3308/mysql/my.cnf <<EOF
[mysqld]
datadir=/mysql/data
max_allowed_packet = 1G
innodb_log_file_size = 512M
innodb_log_buffer_size = 512M
innodb_file_per_table = 1
innodb_buffer_pool_size=8G
innodb_flush_log_at_trx_commit=0
max_connections=2000
lower-case-table-names=1
innodb_strict_mode = 0
character_set_server=utf8
secure_file_priv = 
default-time-zone='+08:00'
transaction-isolation = READ-COMMITTED
#skip-grant-tables
[mysql]
prompt="\\u@\\h : \\d \\r:\\m:\\s>"
default-character-set=utf8
EOF
chmod 700 /mysql3308/mysql/my.cnf 
chown mysql:mysql /mysql3308 -R

# 如下是启动数据库服务的命令

docker run --privileged=true  --name mysql3308 \
-p 3308:3306 -v /mysql3308/mysql:/var/lib/mysql  \
-v /mysql3308/mysql-files:/var/lib/mysql-files \
-v /mysql3308/mysql/my.cnf:/etc/my.cnf -v /mysql3308/log:/var/log  \
-e MYSQL_ROOT_PASSWORD=Test20131127  -e TZ=Asia/Shanghai -d mysql:8.4.5  \
--defaults-file=/var/lib/mysql/my.cnf 

查看参数是否生效

登录
docker exec -it mysql3308 bash
mysql -uroot -pTest20131127
SHOW VARIABLES WHERE Variable_name IN ('max_connections''innodb_strict_mode',\
'lower_case_table_names','transaction_isolation','version','time_zone');

不需要了后者是有错误的话 可以删除容器
docker rm -f mysql3308

部分参数说明

--name 指定容器的名字
镜像是不变的, 容器相对于镜像是一个运行态+可写入的层.
-p 端口映射. 外部端口:内部端口
-v volueme 磁盘路径挂载
-e 指定环境变量, 可以是密码或者是时区等.
-d daemon 后台运行,
--defualt-files 默认配置文件.
-it 交互+tty的方式进行与容器的交互
-f force 强制的含义

打包镜像

本次以java打包镜像为例进行.
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/eclipse-temurin:8u442-b06-jdk-noble
# 修改镜像名字
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/eclipse-temurin:8u442-b06-jdk-noble  eclipse-temurin:8u442-b06-jdk-noble
# 编写相关dockerfile 
FROM eclipse-temurin:8u442-b06-jdk-noble
RUN apt-get update  && apt-get -y install fontconfig && \
    apt-get install -y locales && rm -rf /var/lib/apt/lists/* \   
    && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8
WORKDIR  /usr/share/fonts/
ADD  myfonts.tar.gz   /usr/share/fonts/
RUN     fc-cache
ADD zh.tar.gz /usr/lib/locale
ENV LANG zh_CN.utf8
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo'$TZ' > /etc/timezone

创建一下其他的文件, 比如上面ADD的  myfonts.tar.gz 和 zh.tar.gz 
生成进行
docker build . -t openjdk_442

检查

docker run -it openjdk_442 bash 
执行命令:
fc-list 确认包含字体
env 查看是否中文
里面可以看 TZ的时区信息

确定java版本: 
 java -version
openjdk version "1.8.0_442"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_442-b06)
OpenJDK 64-Bit Server VM (Temurin)(build 25.442-b06, mixed mode)

参数说明

FROM 镜像的基础镜像,可以理解为是基于谁去做的
RUN  镜像内执行命令, 比如可以安装软件,也可以执行脚本
ADD  将文件解压缩并且添加到指定路径.
ENV  指定环境变量
COPY 复制文件, 不需要解压缩
CMD  容器内默认执行的命令.

优网科技,优秀企业首选的互联网供应服务商

优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!

优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。


我要投稿

姓名

文章链接

提交即表示你已阅读并同意《个人信息保护声明》

专属顾问 专属顾问
扫码咨询您的优网专属顾问!
专属顾问
马上咨询
扫一扫马上咨询
扫一扫马上咨询

扫一扫马上咨询