背景
容器是十几年前火起来的一个技术.
可以理解为是轻量级的虚拟机解决方案.
他的使用其实很简单.
这里进行一些基本的知识整理.
使用经典的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开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。