ToB企服应用市场:ToB评测及商务社交产业平台
标题:
docker笔记
[打印本页]
作者:
水军大提督
时间:
2024-7-25 09:49
标题:
docker笔记
docker安装
不知道为什么docker官网没有centos的文档了。。。
# 移除旧版本
yum remove docker*
# docker必须安装的一些必备的工具
yum install -y yum-utils
# 配置docker yum源地址
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码
docker分为两个版本,,一个是ce:社区版本 ,一个是ee :企业版
#安装最新版本docker ... docker-ce是社区版 ,docker-ce-cli:docker的客户端
#我们发的命令就是在客户端发的,客户端发送到 docker-daemon服务端,服务端再根据收到的命令调用docker内部接口。。。 containerd.io : Docker 使用的一个核心组件,它是一个容器运行时接口(CRI)的实现
yum install docker-ce docker-ce-cli containerd.io
# 展示docker-ce的yum源
yum list docker-ce --showduplicates | sort -r
# 安装指定版本的docker
yum install docker-ce-3:19.03.14-3.el8.x86_64 ...
还有docker-ce-cli指定版本,, containerd.io ,, 我安装docker-ce-cli-xxx提示版本找不到
如果只指定docker-ce版本,,docker-ce-cli会用最新版本
# 查看版本
docker version
复制代码
docker常用命令:
systemctl start docker
# 开启启动
systemctl enable docker
复制代码
docker配置阿里云镜像加快地点: 打开阿里云官网,搜索容器镜像服务,,将里面的脚本执行一遍,,这个脚本就会将阿里云镜像加快地点配置到/etc/docker/daemon.json中,,这个文件是docker的核心配置文件
docker images
docker image ls
docker pull
docker pull redis:latest
# 删除镜像,, 如果镜像有容器存在,删除不掉。 -f强制删除,
docker rmi redis:latest
docker ps -a
docker rmi --help
docker rmi -f $(docker images -aq)
# 移除游离镜像,, 比如说在将容器commit成一个镜像的时候,,重复commit,后面的会把前面的覆盖掉,而前面的变成了没有名字的游离镜像
docker image prune
# image复制并且命名
docker tag 原镜像:标签 新镜像:标签
复制代码
容器的状态:
up:运行中
create : 已创建
pause : 暂停
exited : 退出
# 创建容器
docker create 镜像名字
docker create [控制项] 镜像名 启动命令[启动参数]
docker create -p 主机端口:容器端口
-P : 随机端口
#暂停容器
docker pause
#恢复暂停
docker unpause
# 优雅的停止
docker stop
# 强制退出
docker kill
# 一个容器可以映射多个 主机端口
docker run -p 6379:6379 -p 8888:6379 redis
# 打印日志
docker logs
# 日志follow
docker logs -f
# 绑定容器控制台
docker attach
docker exec
-i : 交互模式 interactive
-t : tty 重新开启一个终端
-u : 以哪一种用户身份进去
# 以0号用户,0号组进去,,也就是root
docker exec -it -u 0:0 mynginx /bin/bash
# --privileged 最高权限进去
docker exec -it --privileged mynginx /bin/bash
# 进去之后控制台输入id,, 查看uid:用户ID,gid :用户组ID,groups 用户所属的其他用户组。
# 查看状态
docker inspect
docker inspect images
# 拷贝内容
docker cp
# 复制index.html 到 mynginx容器里面的 /usr/share/nginx/html 目录下: 如果这个不是目录,,不会自动创建目录,而是直接拷贝
docker cp index.html mynginx:/usr/share/nginx/html
# 将容器总的文件复制到 虚拟机中
docker cp mynginx:/etc/nginx/nginx.conf nginx.conf
# 比较容器和最开始镜像生成的容器有什么不同,, 检查容器的 增删改
docker diff
D: delete. C : change. A:add
# 修改了容器之后,可以将容器变成一个新的镜像
docker commit
# -a :作者是谁 -m:提交的message 容器名字。 镜像名字:标签
docker commit -a waterkid -m "first" mynginx waterkid:v1
当容器发生变化之后,如果我们后来还要以新的容器为准,就需要提交一个镜像,,多次提交,会覆盖掉之前提交的镜像,,之前的镜像会变成游离镜像,,docker image prune 清除
复制代码
将镜像放在docker hub 中:
需要在docker hub 上注册一个账号,镜像名就是仓库名,,,
docker hub中一个完备官方镜像的全路径是 docker.io/library/redis:alpine
我们的镜像是将中心的library变成自己的用户名
docker.io/waterkid01/mynginx:v1
官方的镜像名字,,前面不需要带用户名,,而自己写的镜像,需要带自己的用户名,如果要上传到docker hub中的话,,
首先需要将镜像改成waterkid01/mynginx
docker tag waterkid:v1 waterkid01/mynginx:v1
# 登录docker hub
docker login
# 推送
docker push waterkid01/mynginx:v1
复制代码
我的推送总是重试,,
docker导入导出,有两种方式:
第一种是将容器变成tar,, docker export,,,docker import
第二种是将镜像变成tar。。。 docker save,,, docker load
# 将 nginx01容器 ===》 nginx.tar -o :output
docker export -o nginx.tar nginx01
# 将tar变成镜像
docker import nginx.tar mynginx:v6
这样生成的镜像,,直接启动容器是不行的,,缺少启动命令。。需要查看之前容器的启动命令
docker inspect nginx01
复制代码
# 不截断输出,也可以看到启动命令
docker ps --no-trunc
运行import导入的镜像,,需要将原来容器的启动命令,,加在这个启动容器后面
docker run -P mynginx:v6 /docker-entrypoint.sh nginx -g 'daemon off;'
复制代码
# 将镜像保存成tar ,,可以是多个镜像
docker save -o waterkid.tar waterkid:v1
# 将tar导出为镜像
docker load -i waterkid.tar
复制代码
每一个镜像,一启动都会有镜像默认干的活,,,在cmd中
从0到1制作镜像
编写Dockerfile
from busybox
CMD ping baidu.com
复制代码
# 自己做一个镜像 ,打包成mybusy:v6镜像 -f:指定是那个Dockerfile ./ 这里面的所有操作都是在 ./ 这个路径下执行
docker build -t mybusy:v6 -f Dockerfile ./
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4