docker笔记

打印 上一主题 下一主题

主题 650|帖子 650|积分 1950


docker安装
不知道为什么docker官网没有centos的文档了。。。
  1. # 移除旧版本
  2. yum remove docker*
  3. # docker必须安装的一些必备的工具
  4. yum install -y yum-utils
  5. # 配置docker yum源地址
  6. yum-config-manager \
  7.     --add-repo \
  8.     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码
docker分为两个版本,,一个是ce:社区版本 ,一个是ee :企业版
  1. #安装最新版本docker ... docker-ce是社区版 ,docker-ce-cli:docker的客户端
  2. #我们发的命令就是在客户端发的,客户端发送到 docker-daemon服务端,服务端再根据收到的命令调用docker内部接口。。。  containerd.io : Docker 使用的一个核心组件,它是一个容器运行时接口(CRI)的实现
  3. yum install docker-ce docker-ce-cli containerd.io
  4. # 展示docker-ce的yum源
  5. yum list docker-ce --showduplicates | sort -r
  6. # 安装指定版本的docker
  7. yum install docker-ce-3:19.03.14-3.el8.x86_64 ...
  8. 还有docker-ce-cli指定版本,, containerd.io ,, 我安装docker-ce-cli-xxx提示版本找不到
  9. 如果只指定docker-ce版本,,docker-ce-cli会用最新版本
  10. # 查看版本
  11. docker version
复制代码

docker常用命令:
  1. systemctl start docker
  2. # 开启启动
  3. systemctl enable docker
复制代码
docker配置阿里云镜像加快地点: 打开阿里云官网,搜索容器镜像服务,,将里面的脚本执行一遍,,这个脚本就会将阿里云镜像加快地点配置到/etc/docker/daemon.json中,,这个文件是docker的核心配置文件
  1. docker images
  2. docker image ls
  3. docker pull
  4. docker pull redis:latest
  5. # 删除镜像,, 如果镜像有容器存在,删除不掉。 -f强制删除,
  6. docker rmi redis:latest
  7. docker ps -a
  8. docker rmi --help
  9. docker rmi -f $(docker images -aq)
  10. # 移除游离镜像,, 比如说在将容器commit成一个镜像的时候,,重复commit,后面的会把前面的覆盖掉,而前面的变成了没有名字的游离镜像
  11. docker image prune
  12. # image复制并且命名
  13. docker tag 原镜像:标签 新镜像:标签
复制代码
容器的状态:


  • up:运行中
  • create : 已创建
  • pause : 暂停
  • exited : 退出
  1. # 创建容器
  2. docker create 镜像名字
  3. docker create [控制项] 镜像名 启动命令[启动参数]
  4. docker create -p 主机端口:容器端口
  5. -P : 随机端口
  6. #暂停容器
  7. docker pause
  8. #恢复暂停
  9. docker unpause
  10. # 优雅的停止
  11. docker stop
  12. # 强制退出
  13. docker kill
  14. # 一个容器可以映射多个 主机端口
  15. docker run -p 6379:6379 -p 8888:6379 redis
  16. # 打印日志
  17. docker logs
  18. # 日志follow
  19. docker logs -f
  20. # 绑定容器控制台
  21. docker attach
  22. docker exec
  23.         -i : 交互模式 interactive
  24.         -t : tty 重新开启一个终端
  25.         -u : 以哪一种用户身份进去
  26. # 以0号用户,0号组进去,,也就是root
  27. docker exec -it -u 0:0  mynginx /bin/bash
  28. # --privileged 最高权限进去
  29. docker exec -it --privileged mynginx /bin/bash
  30. # 进去之后控制台输入id,, 查看uid:用户ID,gid :用户组ID,groups 用户所属的其他用户组。
  31. # 查看状态
  32. docker inspect
  33. docker inspect images
  34. # 拷贝内容
  35. docker cp
  36. # 复制index.html  到 mynginx容器里面的  /usr/share/nginx/html   目录下: 如果这个不是目录,,不会自动创建目录,而是直接拷贝
  37. docker cp index.html mynginx:/usr/share/nginx/html
  38. # 将容器总的文件复制到 虚拟机中
  39. docker cp mynginx:/etc/nginx/nginx.conf nginx.conf
  40. # 比较容器和最开始镜像生成的容器有什么不同,,  检查容器的 增删改
  41. docker diff
  42. D: delete.  C : change. A:add
  43. # 修改了容器之后,可以将容器变成一个新的镜像
  44. docker commit
  45. # -a :作者是谁 -m:提交的message       容器名字。  镜像名字:标签
  46. docker commit -a waterkid -m "first" mynginx waterkid:v1
  47. 当容器发生变化之后,如果我们后来还要以新的容器为准,就需要提交一个镜像,,多次提交,会覆盖掉之前提交的镜像,,之前的镜像会变成游离镜像,,docker image prune 清除
复制代码
将镜像放在docker hub 中:
需要在docker hub 上注册一个账号,镜像名就是仓库名,,,
docker hub中一个完备官方镜像的全路径是 docker.io/library/redis:alpine
我们的镜像是将中心的library变成自己的用户名
docker.io/waterkid01/mynginx:v1
官方的镜像名字,,前面不需要带用户名,,而自己写的镜像,需要带自己的用户名,如果要上传到docker hub中的话,,

首先需要将镜像改成waterkid01/mynginx
  1. docker tag waterkid:v1  waterkid01/mynginx:v1
  2. # 登录docker hub
  3. docker login
  4. # 推送
  5. docker push waterkid01/mynginx:v1
复制代码
我的推送总是重试,,
docker导入导出,有两种方式:
第一种是将容器变成tar,, docker export,,,docker import
第二种是将镜像变成tar。。。 docker save,,, docker load
  1. # 将 nginx01容器 ===》 nginx.tar   -o :output
  2. docker export -o nginx.tar nginx01
  3. # 将tar变成镜像
  4. docker import nginx.tar mynginx:v6
  5. 这样生成的镜像,,直接启动容器是不行的,,缺少启动命令。。需要查看之前容器的启动命令
  6. docker inspect nginx01
复制代码

  1. # 不截断输出,也可以看到启动命令
  2. docker ps --no-trunc
  3. 运行import导入的镜像,,需要将原来容器的启动命令,,加在这个启动容器后面
  4. docker run -P mynginx:v6 /docker-entrypoint.sh nginx -g 'daemon off;'
复制代码
  1. # 将镜像保存成tar  ,,可以是多个镜像
  2. docker save -o waterkid.tar waterkid:v1
  3. # 将tar导出为镜像
  4. docker load -i waterkid.tar
复制代码
每一个镜像,一启动都会有镜像默认干的活,,,在cmd中

从0到1制作镜像
编写Dockerfile
  1. from busybox
  2. CMD ping baidu.com
复制代码
  1. # 自己做一个镜像 ,打包成mybusy:v6镜像  -f:指定是那个Dockerfile  ./ 这里面的所有操作都是在 ./ 这个路径下执行
  2. docker build -t mybusy:v6 -f Dockerfile ./
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表