dockers-系统学习


一、dockers是什么?

  1. 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,也可以实现虚拟化,然后发布到任何流行的Linux机器上。

  2. 基于 Go 语言实现

  3. 完全使用沙箱机制,相互之间不会有任何接口连接,互相隔离

  4. 性能开销极低。

  5. 解决软件跨环境迁移问题。通过利用Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

二、架构图

2.1、镜像(Image)

  1. 相当于是一个 root 文件系统

2.2、容器(Container)

  1. 镜像和容器的关系,就像是java中的类和对象一样,通过镜像创建容器

    1.1. 镜像(类)是静态的定义

    1.2. 容器(实例化电源线)是镜像运行时的实体。

  2. 容器可以通过命令进行各种操作,如创建、启动、停止、删除、暂停等。

2.3、仓库(Repository)

  1. 保存镜像的一个控制中心

三、 docker容器虚拟化 与 传统虚拟机比较

四、 docker安装

4.1、yum 包更新到最新

  1. yum update


(期间要选择确认,输入 y 即可)

4.2、安装需要的软件包

  1. yum install -y yum-utils

  2. yum install -y device-mapper-persistent-data

  3. yum install -y lvm2

4.3、设置yum源

  1. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.4、安装docker

  1. yum install -y docker-ce

4.5、查看docker版本,验证是否验证成功

  1. docker -v

五、 镜像加速

  1. 从docker hub(https://hub.docker.com/)上下载docker镜像,太慢配置镜像加速器加快镜像下载速度

5.1、 创建daemon.json

  1. sudo mkdir -p /etc/docker

  2. sudo vim /etc/docker/daemon.json

     {"registry-mirrors": ["http://hub-mirror.c.163.com","https://fsqbo5wy.mirror.aliyuncs.com","https://registry.docker-cn.com"]}
    

5.2、重新启动服务

  1. sudo systemctl daemon-reload

  2. sudo systemctl restart docker

六、 进程相关命令

6.1、 启动docker

  1. systemctl start docker

6.2、 停止docker

  1. systemctl stop docker

6.3、查看docker状态

  1. systemctl restart docker
  2. systemctl status docker

6.4、重启docker

  1. systemctl status docker

6.5、设置开机启动docker服务,避免关机重启忘记启动服务

  1. systemctl enable docker

七、 镜像相关命令

7.1、查看本地所有的镜像

  1. docker images

1. REPOSITORY:镜像仓库
2. TAG:版本号
3. IMAGE ID:镜像ID
4. CREATED:镜像创建时间
5. SIZE:镜像大小

7.2、查看所用镜像的id

  1. docker images -q

7.3、搜索镜像:从网络中查找需要的镜像

  1. docker search 镜像名称

7.4、拉取镜像:从Docker仓库下载镜像到本地

  1. docker pull 镜像名称:版本号

    1. 如果版本号不指定则是最新的版本

7.5、删除指定本地镜像

  1. docker rmi 镜像id

7.6、删除所有本地镜像,(项目环境禁止使用)

  1. docker rmi ‘docker images -q’

八、容器相关命令

8.1、创建并启动容器

1. docker run 参数

例如:docker run -it --name redis redis:latest /bin/bash
或:docker run -id --name redis redis:latest /bin/bash1. Docker以redis:latest 镜像创建一个新容器redis,然后在redis里执行/bin/bash命令1. -it: 创建新容器并进入容器内部,当执行exit时,从容器内部退出,并关闭容器2. -id:创建新容器并后台运行,不进入容器,需要使用docker exec 命令进入容器,退出后,容器不会关闭。

2. 进入容器命令:docker exec -it mysql1 /bin/bash

3. 参数说明

-i:1. 保持容器运行。2. 通常与 -t 同时使用。1. 加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭  -t:1. 为容器重新分配一个伪输入终端,通常与 -i 同时使用。-d:1. 以守护(后台)模式运行容器。2. 创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。--name:1. 为创建的容器命名。/bin/bash1. 启动容器后要执行的命令2. 不写也可以,默认是命令是/bin/bash-p:小写主机端口:容器内部的端口1.  主机端口(6376)映射到容器内部的6379端口例如:docker run -id --name redis2 -p 6376:6379 redis:latest /bin/bash
-P:大写容器端口 随机映射 主机端口--restart:重启策略redis:latest指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker就会从镜像仓库下载公共镜像。

4. 查看正在运行的容器

1. docker ps
2. 运行状态:created(已创建)restarting(重启中)running 或 Up(运行中)removing(迁移中)paused(暂停)exited(停止)dead(死亡)PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

5. 停止容器

  1. docker stop 容器名称

6. 启动容器

  1. docker start 容器名称

7. 删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除

  1. docker rm 容器名称1 容器名称2 容器名称3

8. 查看容器日志

  1. docker logs container-name/container-id

    例如:docker logs 0414ba6c2442

9.查看容器信息

  1. docker inspect 容器名称

[{"Id": "0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4","Created": "2021-04-22T23:53:15.289784249Z","Path": "docker-entrypoint.sh","Args": ["/bin/bash"],"State": {"Status": "exited","Running": false,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 0,"ExitCode": 0,"Error": "","StartedAt": "2021-04-23T00:23:43.036719956Z","FinishedAt": "2021-04-23T00:28:33.983807032Z"},"Image": "sha256:739b59b96069d2edfa60f66b5efb4960e7129053ccbb2ac5fd1c9351e7731918","ResolvConfPath": "/var/lib/docker/containers/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4/resolv.conf","HostnamePath": "/var/lib/docker/containers/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4/hostname","HostsPath": "/var/lib/docker/containers/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4/hosts","LogPath": "/var/lib/docker/containers/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4/0414ba6c24422088082bcb04456d72659f965636d6976b5a5423e253c07b0fd4-json.log","Name": "/redis","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","ExecIDs": null,"HostConfig": {"Binds": null,"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "default","PortBindings": {},"RestartPolicy": {"Name": "no","MaximumRetryCount": 0},"AutoRemove": false,"VolumeDriver": "","VolumesFrom": null,"CapAdd": null,"CapDrop": null,"CgroupnsMode": "host","Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "private","Cgroup": "","Links": null,"OomScoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": null,"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "runc","ConsoleSize": [0,0],"Isolation": "","CpuShares": 0,"Memory": 0,"NanoCpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"BlkioDeviceReadBps": null,"BlkioDeviceWriteBps": null,"BlkioDeviceReadIOps": null,"BlkioDeviceWriteIOps": null,"CpuPeriod": 0,"CpuQuota": 0,"CpuRealtimePeriod": 0,"CpuRealtimeRuntime": 0,"CpusetCpus": "","CpusetMems": "","Devices": [],"DeviceCgroupRules": null,"DeviceRequests": null,"KernelMemory": 0,"KernelMemoryTCP": 0,"MemoryReservation": 0,"MemorySwap": 0,"MemorySwappiness": null,"OomKillDisable": false,"PidsLimit": null,"Ulimits": null,"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"],"ReadonlyPaths": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]},"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06-init/diff:/var/lib/docker/overlay2/7735fe503e3a1ce62348a702b7bca627b999359a73aa0e06934c57b9fcea4dfa/diff:/var/lib/docker/overlay2/84942e998e650f22b9b8c0da635bc3dc1a1856a8f70c14ae49fa429ff33e9c77/diff:/var/lib/docker/overlay2/2ca53404c7adce969e66c73ccb00f17ad88938d3e81549d42a9d17cf9f27afc3/diff:/var/lib/docker/overlay2/c78bfd87ad4175b3bd91c7bc6ddc53d7dbbc5386a7e18897309996a58b4e9bbc/diff:/var/lib/docker/overlay2/c11b35fea6a73fff25181444a0da20175d4e89b5ed37382aa61ceaa54c4af038/diff:/var/lib/docker/overlay2/9aa0e8fc33072b8fa6f4a3c6cb89221da26d08d179704067a12ca12056ad9590/diff","MergedDir": "/var/lib/docker/overlay2/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06/merged","UpperDir": "/var/lib/docker/overlay2/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06/diff","WorkDir": "/var/lib/docker/overlay2/dd377db7626ebf5716b65b800dfbba5cd582f6f749b9243e3a49fa3c3cc46e06/work"},"Name": "overlay2"},"Mounts": [{"Type": "volume","Name": "f44072f02d1e71ff6cfddf940e483607e675b68139ca0182119218f556398a3d","Source": "/var/lib/docker/volumes/f44072f02d1e71ff6cfddf940e483607e675b68139ca0182119218f556398a3d/_data","Destination": "/data","Driver": "local","Mode": "","RW": true,"Propagation": ""}],"Config": {"Hostname": "0414ba6c2442","Domainname": "","User": "","AttachStdin": true,"AttachStdout": true,"AttachStderr": true,"ExposedPorts": {"6379/tcp": {}},"Tty": true,"OpenStdin": true,"StdinOnce": true,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.12","REDIS_VERSION=6.2.2","REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.2.tar.gz","REDIS_DOWNLOAD_SHA=7a260bb74860f1b88c3d5942bf8ba60ca59f121c6dce42d3017bed6add0b9535"],"Cmd": ["/bin/bash"],"Image": "redis:latest","Volumes": {"/data": {}},"WorkingDir": "/data","Entrypoint": ["docker-entrypoint.sh"],"OnBuild": null,"Labels": {}},"NetworkSettings": {"Bridge": "","SandboxID": "09b23f36838f8d36a20a87049082fde6ce128bc0366f5c8b2441926b87b0d423","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {},"SandboxKey": "/var/run/docker/netns/09b23f36838f","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "","Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "","IPPrefixLen": 0,"IPv6Gateway": "","MacAddress": "","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "06fabd9f48f3659273f063682f36525c7355fe517e7025d50cd87637ef011bdf","EndpointID": "","Gateway": "","IPAddress": "","IPPrefixLen": 0,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "","DriverOpts": null}}}}
]

转载:
https://blog.csdn.net/zhou920786312/article/details/115607439

https://blog.csdn.net/zhou920786312/article/details/115607535

https://blog.csdn.net/zhou920786312/article/details/115607644

dockers-系统学习相关推荐

  1. 零基础参加java培训的系统学习路线

    ​ 零基础想要学习java技术,那么最好的选择就是参加java培训,进行系统的学习,以下就是小编为大家整理的零基础参加java培训的系统学习路线,希望能够帮助到正在学习java技术的零基础同学. 零基 ...

  2. java学mybatis还用学jdbc吗,mybatis系统学习(二)——使用基础mybatis代替原始jdbc

    mybatis系统学习(二)--使用基础mybatis代替原始jdbc 前言 这一篇笔记的内容应当是建立在上一篇的基础之上,不论是使用的数据表,还是对应的实体类,都在上一篇有过说明. 有兴趣的或者对相 ...

  3. Redis 系统学习目录

    Redis 系统学习目录 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 ...

  4. Dubbo -- 系统学习 笔记 -- 示例 -- 参数验证

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 参数验证 参数验证功能是基于JSR303实现的,用户只需标识JSR303标准的验证 ...

  5. java php mysql_系统学习javaweb13----MYSQL学习(使用PHP、SQL)1

    系统学习javaweb13----MYSQL学习(使用PHP.SQL.mysqladmin)1 (本随笔是自学笔记,我学习的教程来自"菜鸟教程|MYSQL教程",十分感谢!) 目录 ...

  6. python自学流程-Python系统学习流程图,教你一步步学习python

    对于刚开始接触Python的小伙伴来说,没有思路方法,不知道从何开始学习,把软件环境安装好后就不知所措了!接下来我给大家分享下多位大牛倾力打造的python系统学习流程,一个月才设计完的! Pytho ...

  7. .NET系统学习----Globalization Resources

    前言: 在学习如何使用.NET资源文件以及如何开发World-Ready程序之前,我们先通过一个例子来看看为什么要使用资源文件,以及使用它的好处. 假设要在程序中根据当前的Culutre来设置Form ...

  8. Java I/O系统学习系列二:输入和输出

    编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象."流"屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇 ...

  9. linux进程的环境变量,LINUX系统学习一(进程、MMU,环境变量、getenv、fork、getpid/ge...

    LINUX系统学习一(进程.MMU,环境变量.getenv.fork.getpid/ge LINUX系统学习一(进程.MMU,环境变量.getenv.fork.getpid/getppid.ps.ki ...

  10. 吴恩达登录知乎,亲自回答如何系统学习机器学习

    如何系统地学习机器学习?知乎里有很多回答,近日,吴恩达老师亲自在知乎回答了这个问题: 作者:吴恩达 链接:https://www.zhihu.com/question/266291909/answer ...

最新文章

  1. OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)
  2. java 线程池 分组_JAVA面试题解惑系列(十)——话说多线程
  3. 实名羡慕!蚂蚁员工激励达 1376.9 亿,人均能在杭州买套 283 平的房子?
  4. Java中在一个字符串的固定位置插入字符串
  5. Segment fault及LINUX core dump详解
  6. 3 photolemur 样式_macOS下支持RAW格式的照片编辑工具
  7. SQLmap学习使用
  8. python中字符串(str)的常用处理方法
  9. EBMIDE——打印格式管理
  10. 软件工程---gjb438b 质量规范体系
  11. Android基于在线地图的轨迹跟踪服务
  12. 计算机高中期末总结作文,高中期末总结作文
  13. walking机器人入门教程-应用-全景图
  14. MySQL 修改frm文件_mysql 之 frm+ibd文件还原data
  15. c语言程序设计工作任务,C语言程序设计任务驱动教程
  16. Lisp基础函数:car, cdr, cons...
  17. ViewPager PagerAdapter
  18. staruml文字换行 - 魔改StarUML(不负责任版,2333
  19. 图像超分——SISR方法总结(阅读整理之一)(优缺点,方法详情长更)
  20. zabbix问题集锦

热门文章

  1. PAT10321032 挖掘机技术哪家强 (20 分)
  2. 双拼、kotlin、依赖倒置
  3. 编程实现键盘记录功能
  4. 基于keras的1D CNN时间序列分析
  5. backface-visibility
  6. ker矩阵是什么意思_用初等变换求逆矩阵的小小解释
  7. 工厂方法(整理自李建忠C++设计模式视频)
  8. 深圳高交会ZDNS发布域名服务安全威胁管控系统,为互联网入口保驾护航
  9. ArcGIS Server Rest 认证过程分析
  10. 京东开源asyncTool之线程编排