docker简介及常用指令

本文详细介绍了Docker的基础知识,包括其作为容器引擎的角色,与传统虚拟化的区别,以及工作原理。重点阐述了Docker的常用命令,如镜像、容器、网络和数据管理,还涉及了容器的启动、停止、日志查看、文件复制等操作。此外,文章提及了Docker的数据卷管理,强调了其在数据持久化和共享中的作用。最后,提到了Docker的仓库管理,包括登录、登出和镜像推送。
摘要由CSDN通过智能技术生成


Docker是管理容器的引擎,为应用打包、部署平台、而非单纯的虚拟化技术。

1.什么是docker

  • Docker是管理容器的引擎。让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。

  • Docker为应用打包、部署平台,而非单纯的虚拟化技术。

  • docker更像是物理机的一个进程

  • 对于开发人员:一次构建,可以运行在任何地方

  • 对于运维人员:一次配置,可以运行在任何地方

传统虚拟化与容器技术对比

虚拟机docker容器
操作系统宿主机上运行虚拟机OS共享宿主机OS
存储镜像较大(GB)镜像小(MB)
性能操作系统额外的cpu、内存消耗几乎无性能损耗
移植性笨重、与虚拟化技术耦合度高轻量、灵活迁移
隔离性完全隔离安全隔离
部署慢、分钟级快速、秒级
运行密度一般几十个单机支持上千容器

一个完整的Docker有以下几个部分组成:

dockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器

2.容器是如何工作的?

在这里插入图片描述

Docker采用 C/S架构,Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。

比如,客户发送docker run请求,Docker daemon接收到后先看本地有没有响应的镜像,若本地没有就从registry下载镜像,然后去本地创建容器,(多个容器可以共用一个镜像)。

Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。

docker的安装和容器的启动参考https://blog.csdn.net/qiao_qing/article/details/113173784?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162519845516780264043159%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=162519845516780264043159&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_v29-1-113173784.pc_v2_rank_blog_default&utm_term=docker&spm=1018.2226.3001.4450

3.docker常用指令

1)安装Docker:

阿里云-》容器-》docker

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
vim CentOS-Base.repo 
:%s/$releasever/7/g
[root@server11 yum.repos.d]# yum clean all
yum install -y docker-ce
2)镜像管理
docker images:列出本地所有镜像
docker search <IMAGE_ID/NAME>:查找镜像
docker pull  <IMAGE_ID> : 下载镜像
docker push <IMAGE_ID>:上传镜像
docker rmi <IMAGE_ID>:删除镜像
3)容器管理

启动和停止

docker run -i -t <IMAGE_ID> /bin/bash:-i:标准输入给容器    -t:分配一个虚拟终端    /bin/bash:执行bash脚本
    -d:以守护进程方式运行(后台)
    -P:默认匹配docker容器的5000端口号到宿主机的49153 to 65535端口
    -p <HOT_PORT>:<CONTAINER_PORT>:指定端口号
    --name: 指定容器的名称
    --rm:退出时删除容器

docker stop <CONTAINER_ID>: 停止container
docker start   <CONTAINER_ID> : 重新启动container 

显示,日志

docker ps - Lists containers.
    -l:显示最后启动的容器
    -a:同时显示停止的容器,默认只显示启动状态

docker attach <CONTAINER_ID> 连接到启动的容器
docker logs <CONTAINER_ID>  : 输出容器日志
    -f:实时输出 

复制文件

docker cp <CONTAINER_ID>:path hostpath:复制容器内的文件到宿主机目录上

删除容器

docker rm <CONTAINER_ID>:删除container 
docker rm `docker ps -a -q`:删除所有容器 
docker kill `docker ps -q` 
docker rmi `docker images -q -a` 
docker wait <CONTAINER_ID>:阻塞对容器的其他调用方法,直到容器停止后退出 

查看进程

docker top <CONTAINER_ID>:查看容器中运行的进程 
docker diff <CONTAINER_ID>:查看容器中的变化 
docker inspect <CONTAINER_ID>:查看容器详细信息(输出为Json) 
    -f:查找特定信息,如 docker inspect  - f  '{{ .NetworkSettings.IPAddress }}' 

打包镜像

  docker commit -m "comment" -a "author" <CONTAINER_ID>  ouruser/imagename:tag
  docker extc -it <CONTAINER> <COMMAND>:在容器里执行命令,并输出结果
4)网络管理
docker run -P:随机分配端口号
docker run -p 5000:5000:绑定特定端口号(主机的所有网络接口的5000端口均绑定容器的5000端口)
docker run -p 127.0.0.1:5000:5000:绑定主机的特定接口的端口号
docker run  - d  - p  127.0 . 0.1 : 5000 : 5000 / udp training / webapp python app . py:绑定udp端口号
docker port <CONTAINER_ID> 5000:查看容器的5000端口对应本地机器的IP和端口号

使用Docker Linking连接容器:
Docker为源容器和接收容器创建一个安全的通道,容器之间不需要暴露端口,接收的容器可以访问源容器的数据

docker run -d -P --name <CONTAINER_NAME> --link <CONTAINER_NAME_TO_LINK>:<ALIAS>   
5)数据管理

Data Volumes:volume是在一个或多个容器里指定的特殊目录

  • 数据卷可以在容器间共享和重复使用
  • 可以直接修改容器卷的数据
  • 容器卷里的数据不会被包含到镜像中
  • 容器卷保持到没有容器再使用它(持久化)
  • 可以在容器启动的时候添加-v参数指定容器卷,也可以在Dockerfile里用VOLUMN命令添加
docker run -d -P --name web -v /webapp training/webapp python app.py
  • 也可以将容器卷挂载到宿主机目录或宿主机的文件上,<容器目录或文件>的内容会被替换为<宿主机目录或文件>的内容,默认容器对这个目录有可读写权限
docker run -d -P --name web -v <宿主机目录>:<容器目录> training/webapp python app.py
  • 可以指定卷的读写权限,ro为只读,rw是读写
docker run -d -P --name web -v <宿主机目录>:<容器目录>:ro training/webapp python app.py
  • 在一个容器创建容器卷后,其他容器便可以通过–volumes-from共享这个容器卷数据,如下:
docker run -d -v /dbdata --name db1 training/postgres echo Data-only container for postgres##首先启动了一个容器,并为这个容器增加一个数据卷/dbdata,然后启动另一个容器,共享这个数据卷
docker run -d --volumes-from db1 --name db2 training/postgres##此时db2使用了db1的容器卷,当容器db1被删除时,容器卷也不会被删除,只有所有容器不再使用此容器卷时,才会被删除
docker rm -v:删除容器卷
  • 除了共享数据外,容器卷另一个作用是用来备份、恢复和迁移数据
docker run --volumes-from db1 -v /home/backup:/backup ubuntu tar cvf /backup/backup.tar /dbdata##启动一个容器数据卷使用db1容器的数据卷,同时新建立一个数据卷指向宿主机目录/home/backup,将/dbdata目录的数据压缩为/backup/backup.tar
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v /home/backup:/backup busybox tar xvf /backup/backup.tar##启动一个容器,同时把backup.tar的内容解压到容器的backup

6)仓库管理
docker login 仓库名:登录
docker logout 仓库名:登出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值