基础服务
【未分类】
备忘的一些链接
图床列表 - imgtu
【目录】生活&其它
游戏修改器-nes游戏修改记录
尝试操作系统-Community20.3
哈哈哈
警世恒言/人生谎言
使用视频采集卡让笔记本当nuc的屏幕
【已废弃】获取微信好友-itchat
获取微信好友-pc hook
易混词语(尽量避免使用)
有用的链接(工具)
zy服务版本记录
注意安全、生命、健康
日文输入法
安卓模拟器中使用微信充值微信豆
备忘小技巧
excel
网站生成
静态网站生成工具-vuepress
静态网站生成工具-hugo
【目录】代码片段
动态显示select的option列表
同时显示汉字和拼音
常用java代码
性能
jmeter
jmeter-性能
ops
kubernetes
jenkins
drone
服务升级记录
mrdoc升级记录
mysql升级记录
方案
跨语言的web服务间接口调用安全问题
【其它编程语言】
编程-javascript
编程-python
前端框架-react
编程-golang
c语言
.NET(dotnet)
【前端】
Lua简明教程
【缓存】redis
redis
服务搭建
搭建mrdoc
主机服务及端口列表
安装centos7虚拟机
docker
虚拟机-vagrant和virtualbox
安装AlpineLinux虚拟机
docker machine
docker-swarm
配置https域名
centos7服务器清理磁盘空间
vscode
multipass
ubuntu 使用
【数据库】mysql
mysql命令
mysql
HashDatabaseAndTableTest.java
mysql-快速导入100w条记录
mysql高级命令
用于排查问题的一些常见命令
基础信息
mysql5.7升级到8
maven相关
maven命令行汇总
自动升级maven工程中的项目版本
maven基础及高级
windows系统使用
windows客户端软件使用
windows 宿主机 + virtualbox虚拟机共同使用
windows常见问题记录
新的开发环境
windows11配置
windows系统下载
命令行安装软件 & 配置软件
折腾谷歌浏览器
浏览器插件列表
windows音频视频下载工具
云服务
服务-tao-道
【目录】技术分享
技术分享-todo
【目录】shell
windows常用命令
shell脚本汇总
shell命令汇总
windows常用脚本
命令行操作录制工具 asciinema-player
windows软件包管理器scoop
网络相关
服务使用
nexus
jenkins
apifox
notify (bark-server)
开发人员相关
IDEA相关配置
压力测试工具-jmeter
【目录】git集合
git常用操作
gitlab替代品:gitea搭建及简单使用
【git神技】git配置多个提交账户
【git神技】git别名使用
【git神技】一个本地仓库同时提交到github/gitlab/gitee等多个代码平台
gitlab使用记录
git问题汇总
git-for-windows配置
用过的jdk版本
内网穿透-通过公网ip访问本地web服务
常见问题的排查及工具
本文档使用 MrDoc 发布
-
+
首页
docker
## 常用版本 docker docker-compose | docker | docker-compose | 备注 | | -------- | -------------- | -------- | | 20.10.9 | 1.23.1 | nj201 | | 19.03.13 | 1.23.1 | aliyun | | 20.10.24 | v2.17.0 | local-vm | | 26.0.0 | v2.33.1 | aliyun-test | ## what:是什么 一条命令快速创建服务(如mysql/redis)。 相对于虚拟机,docker具有快速创建/销毁、环境一致的优点。 ## how:怎么玩 ### 快速安装(不建议) `sudo sh -c "$(curl -fsSL https://get.docker.com)"` ### 安装(方式一) 见<https://docs.docker.com/install/linux/docker-ce/centos/> ```bash echo start to install docker and docker-compose... sudo yum remove -y docker docker-ce docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine echo deleted sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # sudo yum list docker-ce --showduplicates sudo yum install -y docker-ce sudo systemctl enable docker sudo systemctl start docker sudo service docker restart sudo docker run hello-world ``` ### 安装(方式二) ```bash sudo yum install -y wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum list docker-ce --showduplicates | sort -r yum -y install docker-ce-18.06.1.ce-3.el7 # or version 3:26.0.0-1.el7 # yum -y install docker-ce-26.0.0-1.el7 systemctl enable docker && systemctl start docker docker --version ``` ### 配置镜像加速 ``` cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://b9pmyelo.mirror.aliyuncs.com", "https://9y52p56r.mirror.aliyuncs.com", "http://563f9b4c.m.daocloud.io", "https://9y52p56r.mirror.aliyuncs.com"] } EOF systemctl restart docker docker info ``` ### 配置docker命令可被非root用户使用 ```bash sudo groupadd docker sudo usermod -aG docker $USER logout docker run hello-world ``` ### 暴露2375端口(非必需) ``` vim /lib/systemd/system/docker.service 找到 'ExecStart' in [Service] and append ' -H tcp://0.0.0.0:2375', eg: `ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock` ``` #### 使用testcontainers [https://java.testcontainers.org](https://java.testcontainers.org) 创建测试中间件 #### docker-java操作docker docker-java是一款操作docker的java库。 - vi /lib/systemd/system/docker.service - Execstart=/usr/bin/dockerd后加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 退出并且保存 - 运行以下命令: - systemctl daemon-reload - service docker restart - systemctl status docker - netstat -nlp |grep 2375 可以查看2375是否已经被监听 - 浏览器地址栏中访问:http://xxx.xxx.xxx.xxx:2375/info ### docker-ui(非必需) `需要开启动2375端口` **portainer** is suggested! - http://www.cnblogs.com/frankdeng/p/9686735.html `docker run -d --name portainerUI -p 9000:9000 portainer/portainer` ## 安装docker-compose ```bash sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/local/bin/doco echo -e "\n" | sudo tee -a /etc/profile echo -e "alias doco='docker-compose'" | sudo tee -a /etc/profile . /etc/profile doco --version ``` ```bash # method 2 # https://docs.docker.com/compose/install/standalone/ curl -SL https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose ``` (注意版本,尽量去官网复制) from [https://docs.docker.com/compose/install/#install-compose](https://docs.docker.com/compose/install/#install-compose) - ```sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose``` (官方速度会有点慢,使用国内daocloud可快速下载,```sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose```) - curl下载不了的话,可以去<https://github.com/docker/compose/releases>手工下载并上传到linux。 ### docker-compose.yml 见 [https://docs.docker.com/compose/gettingstarted/](https://docs.docker.com/compose/gettingstarted/) ## 常见问题 ### 在容器中编辑文件,但没有vi、vim、nano等编辑器 - 将本机的文件复制到容器中, docker cp xxx.cfg 容器id或名称:绝对路径/xxx.cfg - 将容器的文件复制到本机中, docker cp 容器id或名称:/tmp/index.txt index2.txt ### use centos7 in docker `docker run -d -p 5000:22 --name centos74 --privileged=true centos:latest /usr/sbin/init` `docker exec -it centos74 /bin/bash` ### docker mysql 设置开机启动 restart: always ### 如何批量删除Docker中已经停止的容器 (https://blog.csdn.net/jiangeeq/article/details/79499324) ```text 查看<none>容器 docker ps -a | grep "<none>" 清除<none>容器 docker rm $(docker ps -aq --filter "status=dead" --filter "status=exited" --filter "status=created") 清除<none>镜像 docker rmi $(docker images -f "dangling=true" -q) ``` > #显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID, > sudo docker ps -a|grep Exited|awk '{print $1}' > #查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器 ```text sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'` ``` - 列举出网络 `docker network ls` - 删除网络 `docker network rm xxxx` - 查看容器的名称、ip、端口映射 `docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq)` - 查看容器的ip `docker inspect CONTAINER_NAME | grep IPAddress` - 删除REPOSITORY为`<none>`的镜像 ```bash docker image rm `docker images |grep '<none>'|awk '{print $3}'` ``` ### 查看镜像的Dockerfile ```bash alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage:1.1" dfimage -sV=1.36 0bb0b19e383f > a.log ``` ### /etc/docker/daemon.json文件内容中多一个,导致docker启动不了 ``` { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://xxx.mirror.aliyuncs.com", ] } ``` ## docker volume operation docker volume ls/create/inspect/rm ### backup docker run --rm --volumes-from docker-nexus3_nexus3_1_be78625a2c9d -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /nexus-data ### restore $ docker run --rm --volumes-from DOCKER_CONTAINER_NAME -v $(pwd):/backup ubuntu bash -c "tar xvf /backup/backup.tar -C /nexus-data --strip 1" ## 导入导出 ### 镜像导入导出 镜像导入导出不影响镜像名称与tag ```bash docker images # 导出镜像,docker save 镜像name:tag或imageId > xxx.tar docker save java:8 > java_8.tar # 导出多个镜像成一个文件 docker save -o image_all.tar elasticsearch:8 kibana:5.5 # 载入镜像 docker load < java_8.tar ``` ### 容器导入导出 ```bash docker ps # 把容器导出成文件 docker export 34d2b74c7a0b > mysql57.tar ``` ## 日志与清理 docker容器日志一般在/var/lib/docker/containers/目录下,可执行`find /var/lib/docker/containers/ -name *-json.log |xargs du -sh`查看日志文件大小。 清空容器日志时不能使用rm删除,要使用“写覆盖”的方式。清空所有容器日志的脚本。 ```bash #!/bin/sh # filename: clean_dockerlog.sh # logs后面不能有空格 logs=`find /var/lib/docker/containers/ -name \*-json.log` for docker_log in $logs do echo " " > $docker_log done ``` ### docker占用自盘空间查看和清理 - 查看docker占用的磁盘空间 `docker system df` - 清理docker使用的磁盘空间(Docker提供了`docker system prune`,可以用于清理dangling镜像和容器,以及失效的数据卷和网络) `docker system prune` ## 常用docker | 容器 | 版本 | 大小 | | --- | --- | --- | | easysoft/zentao | 12.5.2 | 647MB | | openjdk | 8-jdk-slim | 288MB | | openjdk | 8-jre-slim | 187MB | | openjdk | 8u275-slim | 288MB | | openjdk | 8-jre-alpine | 84.9MB | | openjdk | 8-jdk-alpine | 105MB | ## 常见说明 ### 挂载点说明 docker-compose.yml中的volumes节点中`/opt/docker_data/vsftpd:/home/vsftpd:rw`,左边是宿主机目录,右边是容器目录,:rw是权限,可不写 ### 查看docker窗口占用内存 `docker stats --no-stream` ### 查看docker所有映射到宿主机的端口 `docker ps -a --format "table {{.Names}}\t{{.Ports}}"` 该命令将显示所有正在运行的容器的名称和它们所映射的端口信息。 如果您只想查看正在运行的容器的端口映射信息,可以省略 `-a` 参数: `docker ps --format "table {{.Names}}\t{{.Ports}}"` 输出中的 PORTS 列会显示容器的端口映射信息。例如,0.0.0.0:8080->80/tcp 表示容器的端口 80 映射到宿主机的端口 8080。
我是张三
2025年3月9日 21:09
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
eblog
Markdown文件
分享
链接
类型
密码
更新密码