docker私房笔记(docker、registry、docker-compose)
注意事项
强烈建议docker宿主机关闭firewalld,直接使用物理或者虚拟防火墙。因为容器映射宿主机端口之后,会直接在iptbales中添加规则,从而导致firewall的形同虚设,如果必须在操作系统做控制,请直接使用iptables
1 docker安装
1.1 离线安装
下载 Docker 二进制文件(https://download.docker.com/linux/static/stable/x86_64/)
注意,目前docker官网已经无法登录,但是还可以从清华镜像站(https://mirrors.tuna.tsinghua.edu.cn/docker-ce/)下载。
tar zxf docker-xxxx-ce.tgz
cp docker/* /usr/bin/
dockerd &
验证
docker info
注册成服务
vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
重载服务配置
systemctl daemon-reload
1.2 在线安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
2 docker常用命令
2.1 下载镜像
docker search xxx
docker pull xxx
2.2 使用镜像
打包镜像
进入项目目录
docker build -t XXX:1.0 .
保存镜像
将容器保存为镜像
docker commit <容器id> <镜像名>:<tag>
将镜像保存为文件
docker save -o XXX.tar XXX:1.0
2.3 使用镜像
导入镜像
docker load -i XXX.tar
运行容器
-d 后台运行 -v 目录映射(宿主机:容器) -p 端口映射(宿主机:容器)-e 设置环境变量 --privileged=true特权运行
docker run --name xxxx -v /var/log/xxx.log:/api/log/xxx.log -e xxxx="xxxx" -e --privileged=true -p 1000:1000 -d xxx:1.0
注意,通过-v进行文件映射,必须宿主机内存在对应文件,否则默认为目录映射,会创建相应空目录
进入容器
docker exec -it xxxx /bin/sh
2.4 制作镜像(以python3环境为例)
# 拉取镜像
docker pull alpine:latest
# 创建一个名为alpine的容器
docker run -itd --name alpine alpine:latest /bin/sh
# 进入alpine容器
docker exec -it alpine /bin/sh
容器内操作
# 更改软件源(此处以3.12为例)
vi /etc/apk/repositories
http://mirrors.aliyun.com/alpine/v3.12/main/
http://mirrors.aliyun.com/alpine/v3.12/community/
# 更新软件源
apk update
# 安装python3
apk add python3
# 安装pip3
apk add py3-pip
3 Registry常用命令
3.1 部署
拉取镜像
docker pull registry
启动
docker run --name registry -d -p 5000:5000 -v /home/registry:/var/lib/registry registry:latest
3.2 上传镜像
标记
docker tag alpine:latest localhost:5000/alpine:v1.0
上传
docker push localhost:5000/alpine:v1.0
3.3 查看镜像
查看镜像名称
curl -X GET http://localhost:5000/v2/_catalog
查看镜像标记
curl -X GET http://localhost:5000/v2/alpine/tags/list
3.4 下载镜像
本地下载
docker pull localhost:5000/alpine:v1.0
远程下载
错误信息 http: server gave HTTP response to HTTPS client
新增文件 /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"192.168.199.100:5000"
]
}
重启docker服务
重新拉取
docker pull 192.168.145.135:5000/alpine:v1.0
3.5 删除镜像
通过API只能删除tag,并不会删除镜像,直接删除文件更简单。
进入容器,清空/var/lib/registry/docker/registry/v2/repositories/目录,或者删除映射的本地目录
垃圾回和重启容器
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
docker restart registry
4 docker-compose
4.1 安装
可以从Github下载不同版本的二进制文件,例如docker-compose-linux-x86_64。
下载完成后,将二进制文件复制入路径,例如/usr/local/bin,增加可执行权限和创造软链接
mv docker-compose-linux-x86_64 /usr/local/bin/
chmod +x /usr/local/bin/docker-compose-linux-x86_64
ln -s /usr/local/bin/docker-compose-linux-x86_64 /usr/bin/docker-compose
测试能否正常使用
docker-compose version
4.2 使用
一个docker-compose.yml配置文件示例如下:
version: '3'
services:
test-container:
image: test-image:1.0
volumes:
- /var/log/test-container/test-container.log:/api/test-container.log
restart: always
ports:
- "5000:5000"
dns: 8.8.8.8
environment:
ENV1: ABC
ENV2: DEF
使用docker-compose up
命令启动即可,或用docker-compose up -d
后台执行。
容器会被自动命名为test-image-test-container-1。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端