背景
容器是十几年前火起来的一个技术.
可以理解为是轻量级的虚拟机解决方案.
他的使用其实很简单.
这里进行一些基本的知识整理.
使用经典的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 容器内默认执行的命令.

優(yōu)網(wǎng)科技秉承"專(zhuān)業(yè)團(tuán)隊(duì)、品質(zhì)服務(wù)" 的經(jīng)營(yíng)理念,誠(chéng)信務(wù)實(shí)的服務(wù)了近萬(wàn)家客戶(hù),成為眾多世界500強(qiáng)、集團(tuán)和上市公司的長(zhǎng)期合作伙伴!
優(yōu)網(wǎng)科技成立于2001年,擅長(zhǎng)網(wǎng)站建設(shè)、網(wǎng)站與各類(lèi)業(yè)務(wù)系統(tǒng)深度整合,致力于提供完善的企業(yè)互聯(lián)網(wǎng)解決方案。優(yōu)網(wǎng)科技提供PC端網(wǎng)站建設(shè)(品牌展示型、官方門(mén)戶(hù)型、營(yíng)銷(xiāo)商務(wù)型、電子商務(wù)型、信息門(mén)戶(hù)型、微信小程序定制開(kāi)發(fā)、移動(dòng)端應(yīng)用(手機(jī)站、APP開(kāi)發(fā))、微信定制開(kāi)發(fā)(微信官網(wǎng)、微信商城、企業(yè)微信)等一系列互聯(lián)網(wǎng)應(yīng)用服務(wù)。