Docker 基础

changhao 2021-01-21 11:03:01
docker 基础 技术开发 SegmentFault


版本 1.0
团队 北芯众合技术小组
制作 <wu_chang_hao@qq.com>
时间 2021/01/21

知识点

  • docker 基本概念

    • docker 镜像增删改查
    • docker 容器
    • docker 容器增删改查
    • docker 其他命令使用
    • docker 导入/导出
    • docker 镜像市场
    • docker 阿里云镜像加速
  • 安装 docker
  • docker 实验

    • 测试
    • 自定义docker镜像

      • 案例一
      • 案例二

docker 基本概念

  • 镜像: image
  • 容器: container
  • 仓库: repository

docker 镜像增删改查

docker search # 镜像名:去docker hub 搜索有关镜像文件
docker pull # 镜像名:下载docker镜像
docker images # 查看本地有哪些docker镜像,同docker image ls
docker rmi # 镜像id或者镜像名:删除本地docker镜像
docker rmi -f # 镜像id:强制删除镜像文件

docker 容器

  • docker容器中必须有进程在后台运行,否则容器挂掉
  • docker镜像每次运行 都会生成新的容器id记录

docker 容器的增删改查

docker run 镜像名/镜像id:运行处容器进程实例
docker ps:查看正在运行的容器进程
docker ps -a:显示所有运行过的容器进程(正在运行的,以及挂掉的容器进程),同docker container ls -a,旧的命令
docker run -it 镜像id/镜像名 /bin/bash:运行一个交互的容器
参数:-i:interactive,交互式的命令操作;-t:terminate,开启一个终端界面 ;/bin/bash:指定linux的解释器
docker rm 容器id:删除容器id记录,只能删除挂掉的容器
docker rm `docker ps -aq` :批量删除停止运行的容器记录
docker exec -it 运行着的容器id /bin/bash:进入一个正在运行着的容器
docker logs 容器id:查看容器的日志
docker logs -f 容器id:检查容器内的日志
# 启动容器 (后台模式)
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
# -P参数:将容器内部使用的网络端口随机映射到主机上
docker run -P mongo
docker ps # 查看随机映射的端口
# -p参数:设置固定映射端口
docker -run -d -p 27017:27017 xxx_id /bin/bash
# --net host参数: 可以使用通过web界面访问到容器了
docker run --net host xxx_id /bin/bash

docker 其他命令使用

# docker 查看配置信息
docker info
# 返回docker对象信息,底层信息, 返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
docker inspect xxx_id

docker 导入/导出

# 导出某个镜像
docker export 1e560fca3906 > center.tar
# 导入镜像
docker import cneter.tar
# 导出本地镜像
docker save -o docker-mongo.tar 213c2b6cee9f
# 导入本地镜像
docker load -i docker-mongo.tar

docker 镜像市场

# DaoCloud 厂商
https://hub.daocloud.io/

docker 阿里云镜像加速

# 阿里云镜像加速地址
https://dev.aliyun.com/

安装 docker


wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y docker
# 配置镜像下载加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}

docker 实验

测试


docker run -d centos /bin/sh -c "while true;do echo 'hello, beixin team.'; sleep 1;done"
-d:daemonize,后台运行
centos:指定哪个镜像
/bin/sh:指定linux的解释器
-c:指定一段shell代码
"while true;do echo '熊大真棒'; sleep 1;done",每秒打印一个

自定义docker镜像

案例一

# 获取一个centos镜像,运行出容器实例
docker run -it centos /bin/bash
# 进入容器空间, 安装vim
yum install vim -y
# 退出容器,提交这个容器为一个新的镜像
exit
docker ps -a # 查看刚才安装了vim的容器id,这里
4595c3de8418 9f3 # 这里我的查到时459
# 提交镜像语法:docker commit 容器id 新的镜像名字
docker commit 459 centos-vim
# 查看提交的镜像文件
docker images
# 导出镜像文件到指定的文件,注意为压缩文件
docker save centos-vim > /opt/centos-vim.tar.gz
# 在本地测试导入这个镜像,可以先删除我们生成的镜像
docker rmi centos-vim
# 导入镜像
docker load < /opt/centos-vim.tar.gz
# 导入的镜像,修改名字
# docker tag 旧的镜像名 以docker仓库id开头/新的镜像名
docker tag 84d mydocker/centos-vim
# 执行docker镜像,运行出容器,查看是否携带了vim
docker run -it mydocker/centos-vim
vim # 成功的话,vim可以执行

案例二

docker运行一个flask框架的脚本

# 下载training/webapp的镜像,用来运行python的flask项目。
# docker run的特点,如果镜像不存在,则自动去docker pull下载
# 通过training/webapp实例一个容器对象
docker run -d -P training/webapp python app.py
# 查看运行容器的端口
docker port 容器id
# 容器的启停命令
docker start 容器id
docker stop 容器id
# 根据端口映射,查看flask框架
访问:192.168.16.122:32768
版权声明
本文为[changhao]所创,转载请带上原文链接,感谢
https://segmentfault.com/a/1190000039045295

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云