3 Docker 入门

  1. 首先确保docker 已成功安装在Linux 或windows 系统中

    我们可以使用

    docker info

查看docker是否成功安装和正常运行

  1. 运行我们第一个docker 容器
  • 我们使用docker run 命令启动一个容器

    1. sudo docker run -i -t ubuntu /bin/bash
    2. docker pull registry.docker-cn.com/library/ubuntu:16.04

其实上面两种方式都是一样的,只不过第一种是先在在本机获取,要是本机没有直接去Docker hub 的镜像源去获取,而第二种方法是去我们指定的镜像源去获取,推荐使用第二种,因为第一种方法获取的,有时候会超时因为是有GFW

随后docker 在文件系统内部用这个镜像创建了一个容器

  1. 使用这个容器
  • 在我们创建一个容器之后,我们将会有一个交互的shell

    [root@localhost ~]# sudo docker run -i -t ubuntu /bin/bash

    root@90580bd2674a:/#

    我们就成功的创建了一个Linux 容器了,我们可以向操作普通Linux 一样操作这个容器的内容

    1 hostname

    2 cat /etc/hosts

    3 ip a

    4 ps -aux

    5 vim a

    6 apt-get update && apt-get install vim

** 当我们想结束容器的时候 输入 exit 就退出这个容器了**

  1. docker ps -a//所有容器
  2. docker ps //当前运行的容器
  1. 容器的命名
  • 给 容器命名

    sudo run --name wsc_container -i -t ubuntu /bin

这样我么就成功的创建可一个我们命名的容器,容器命名的好处有很多,例如一个容器名称只有一个,我们可以通过容器的名称来判断容器的功能。要是创建的容器名称重名的话会创建失败

  1. 重启已经停止的容器

    1. docker start wsc_container //根据名称
    2. docker start e691305b1375 //根据ID
  2. 附着到容器上

简单来说就是连接到一个已经正在运行的容器中,相当于重新创建一个SHell连接

  1. docker attach wsc_container //根据名称
  2. docker attach e691305b1375 //根据ID

7.创建守护式容器

守护容器就是一个运行在后台的容器,用于长期的运行。就像我们系统的中的服务一样,在后台默默无闻的工作

  1. sudo docker run --name daemon_dave -d ubuntu /bin/sh -c "while true : do echo hello world: sleep 1 : done"

-d 参数表示 守护容器 ,我们在容器中运行了一个 while 循环 用于一直打印 hello word

  1. 容器内部都在干什么

获取守护式容器的日志

  1. sudo docker logs daemon_dave

跟踪守护式容器

  1. docker logs -f daemon_dave

跟踪守护式容器 并输出时间

  1. docker logs -f daemon_dave
  1. Docker 日志驱动

    可以将docker 容器的日志输出到别的地方

    sudo docker run --log-driver="syslog" --name daemon_dwayne -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

上面的这个会将容器的日志输出到Syslog 中,

  1. 查看容器内的进程

    查看内部的进程

    docker top daemon_dave

11.Docker 统计消息

使用docker status 显示一个或者多个容器的统计信息,并动态显示

  1. docker top daemon_dwayne

12.在容器内部运行进程

我们可以通过命令在容器外部向容器的内部运行程序

  1. sudo docker exec -d daemon_dave touch /etc/new_config_file

获取运行交互式命令

  1. docker exec -t -i daemon_dave /bin/bash
  2. -t -i 表示进程创建TTY 并捕捉到STDIN
  1. 停止守护进程

    docker stop daemon_dave

    docker stop e691305b1375

  2. 自动重启容器

因为容器会各种原因重启,我们可以通过在创建的时候添加命令,然后使容器在关闭之后任然能重启

  1. sudo docker run --restart=on-failure:5 --name daemon_restart -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

上面的参数中 --restart=on-failure:5 是指 在容器重启最多5次 我们也可以将标志设置为--restart=always 指 无论docker 怎样 ,容器都会重启

  1. 深入容器

通过命令 inspect 查看更多容器的信息

  1. docker inspect daemon_dave

将会显示下面的这些信息

  1. [root@localhost ~]# docker inspect daemon_dave
  2. [
  3. {
  4. "Id": "6aab43d6f55ad8531329917623d26a1b00139ee9589ce23f84943cb2282a502a",
  5. "Created": "2018-01-14T08:41:49.345208872Z",
  6. "Path": "/bin/sh",
  7. "Args": [
  8. "-c",
  9. "while true; do echo hello world; sleep 1; done"
  10. ],
  11. "State": {
  12. "Status": "exited",
  13. "Running": false,
  14. "Paused": false,
  15. "Restarting": false,
  16. "OOMKilled": false,
  17. "Dead": false,
  18. "Pid": 0,
  19. "ExitCode": 0,
  20. "Error": "",
  21. "StartedAt": "2018-01-14T08:41:50.053852791Z",
  22. "FinishedAt": "2018-01-14T08:51:52.032411018Z"
  23. },
  24. "Image": "sha256:00fd29ccc6f167fa991580690a00e844664cb2381c74cd14d539e36ca014f043",
  25. "ResolvConfPath": "/var/lib/docker/containers/6aab43d6f55ad8531329917623d26a1b00139ee9589ce23f84943cb2282a502a/resolv.conf",
  26. "HostnamePath": "/var/lib/docker/containers/6aab43d6f55ad8531329917623d26a1b00139ee9589ce23f84943cb2282a502a/hostname",
  27. "HostsPath": "/var/lib/docker/containers/6aab43d6f55ad8531329917623d26a1b00139ee9589ce23f84943cb2282a502a/hosts",
  28. "LogPath": "",
  29. "Name": "/daemon_dave",
  30. "RestartCount": 0,
  31. "Driver": "devicemapper",
  32. "MountLabel": "system_u:object_r:svirt_sandbox_file_t:s0:c857,c907",
  33. "ProcessLabel": "system_u:system_r:svirt_lxc_net_t:s0:c857,c907",
  34. "AppArmorProfile": "",
  35. "ExecIDs": null,
  36. "HostConfig": {
  37. "Binds": null,
  38. "ContainerIDFile": "",
  39. "LogConfig": {
  40. "Type": "journald",
  41. "Config": {}
  42. },
  43. "NetworkMode": "default",
  44. "PortBindings": {},
  45. "RestartPolicy": {
  46. "Name": "no",
  47. "MaximumRetryCount": 0
  48. },
  49. "AutoRemove": false,
  50. "VolumeDriver": "",
  51. "VolumesFrom": null,
  52. "CapAdd": null,
  53. "CapDrop": null,
  54. "Dns": [],
  55. "DnsOptions": [],
  56. "DnsSearch": [],
  57. "ExtraHosts": null,
  58. "GroupAdd": null,
  59. "IpcMode": "",
  60. "Cgroup": "",
  61. "Links": null,
  62. "OomScoreAdj": 0,
  63. "PidMode": "",
  64. "Privileged": false,
  65. "PublishAllPorts": false,
  66. "ReadonlyRootfs": false,
  67. "SecurityOpt": null,
  68. "UTSMode": "",
  69. "UsernsMode": "",
  70. "ShmSize": 67108864,
  71. "Runtime": "docker-runc",
  72. "ConsoleSize": [
  73. 0,
  74. 0
  75. ],
  76. "Isolation": "",
  77. "CpuShares": 0,
  78. "Memory": 0,
  79. "CgroupParent": "",
  80. "BlkioWeight": 0,
  81. "BlkioWeightDevice": null,
  82. "BlkioDeviceReadBps": null,
  83. "BlkioDeviceWriteBps": null,
  84. "BlkioDeviceReadIOps": null,
  85. "BlkioDeviceWriteIOps": null,
  86. "CpuPeriod": 0,
  87. "CpuQuota": 0,
  88. "CpusetCpus": "",
  89. "CpusetMems": "",
  90. "Devices": [],
  91. "DiskQuota": 0,
  92. "KernelMemory": 0,
  93. "MemoryReservation": 0,
  94. "MemorySwap": 0,
  95. "MemorySwappiness": -1,
  96. "OomKillDisable": false,
  97. "PidsLimit": 0,
  98. "Ulimits": null,
  99. "CpuCount": 0,
  100. "CpuPercent": 0,
  101. "IOMaximumIOps": 0,
  102. "IOMaximumBandwidth": 0
  103. },
  104. "GraphDriver": {
  105. "Name": "devicemapper",
  106. "Data": {
  107. "DeviceId": "25",
  108. "DeviceName": "docker-253:0-8727-e5801ce40b05766564430ed8b938a404cbacd96d4a9f2ed70e134e2e2ba408b6",
  109. "DeviceSize": "10737418240"
  110. }
  111. },
  112. "Mounts": [],
  113. "Config": {
  114. "Hostname": "6aab43d6f55a",
  115. "Domainname": "",
  116. "User": "",
  117. "AttachStdin": false,
  118. "AttachStdout": false,
  119. "AttachStderr": false,
  120. "Tty": false,
  121. "OpenStdin": false,
  122. "StdinOnce": false,
  123. "Env": [
  124. "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  125. ],
  126. "Cmd": [
  127. "/bin/sh",
  128. "-c",
  129. "while true; do echo hello world; sleep 1; done"
  130. ],
  131. "Image": "ubuntu",
  132. "Volumes": null,
  133. "WorkingDir": "",
  134. "Entrypoint": null,
  135. "OnBuild": null,
  136. "Labels": {}
  137. },
  138. "NetworkSettings": {
  139. "Bridge": "",
  140. "SandboxID": "42290d6bf35d0bb0aa0e483f2581c4da8f915071f06b4f316d195cf30ecbc087",
  141. "HairpinMode": false,
  142. "LinkLocalIPv6Address": "",
  143. "LinkLocalIPv6PrefixLen": 0,
  144. "Ports": null,
  145. "SandboxKey": "/var/run/docker/netns/42290d6bf35d",
  146. "SecondaryIPAddresses": null,
  147. "SecondaryIPv6Addresses": null,
  148. "EndpointID": "",
  149. "Gateway": "",
  150. "GlobalIPv6Address": "",
  151. "GlobalIPv6PrefixLen": 0,
  152. "IPAddress": "",
  153. "IPPrefixLen": 0,
  154. "IPv6Gateway": "",
  155. "MacAddress": "",
  156. "Networks": {
  157. "bridge": {
  158. "IPAMConfig": null,
  159. "Links": null,
  160. "Aliases": null,
  161. "NetworkID": "c14208a2c1e7fd8e0dd0a8ad05cda943249becbc842857160494222340160c92",
  162. "EndpointID": "",
  163. "Gateway": "",
  164. "IPAddress": "",
  165. "IPPrefixLen": 0,
  166. "IPv6Gateway": "",
  167. "GlobalIPv6Address": "",
  168. "GlobalIPv6PrefixLen": 0,
  169. "MacAddress": ""
  170. }
  171. }
  172. }
  173. }
  174. ]

我们也可以单独的查看容器中的内容信息

  1. docker inspect --format='{{.State.Running }}' daemon_dave
  2. docker inspect --format='{{.Name}} {{.State.Running }}' daemon_dave
  1. 删除容器
  1. docker rm stoic_pike
  2. docker rm thirsty_varahamihira

Docker 入门 之基本命令的更多相关文章

  1. Docker入门教程(二)命令

    Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker ...

  2. Docker入门基础(一)

    Docker入门基础 Linux只存在文件目录,不存在“盘”的概念 Dockers优点:方便部署环境.资源占用少(微服务) Docker的三大概念 镜像:类似虚拟机的镜像.用俗话说就是安装文件.容器: ...

  3. Docker 入门 第二部分: 容器

    目录 Docker 入门 第二部分: 容器 先决条件 介绍 你的新开发环境 使用 Dockerfile 定义一个容器 Dockerfile 应用本身 requirements.txt app.py 构 ...

  4. 【Docker入门】

    目录 Linux容器 Docker的优势 Docker三大概念 安装使用Docker 补充知识 [Docker入门] 发布文章 "qq_41964425" @ *** 所谓Dock ...

  5. Docker入门以及常用命令

    目的: Docker入门 Docker简介 Centos7安装Docker Docker HelloWorld运行原理解析 阿里云镜像仓库配置 Docker常用命令 Docker基本命令 Docker ...

  6. Docker入门篇(一)安装docker

    Docker入门篇(一)安装docker Docker的来源 由dotCloud公司首创及正式命名,但是企业规模小,影响力不够,所以在快要坚持不住的时候,开始吃百家饭--开源了.不开则已,一开惊人.越 ...

  7. 第三章 Docker 入门

    第三章 docker 入门 3.1 确保docker已经就绪 首先查看docker程序是否存在,功能是否正常 [#3#cloudsoar@cloudsoar-virtual-machine ~]$su ...

  8. Docker入门教程(九)10个镜像相关的API

    Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...

  9. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

随机推荐

  1. kmp小记

    以下转载自Matrix67 ************************************************************************************** ...

  2. 实验5 IIC通讯与AD/接DA接口

    1.利用单片机控制PCF8591的AD转换,控制AD0和AD1电位器,在数码光上显示DA转换的值. 2.利用单片机控制PCF8591的DA转换,让发光二极管D1由暗到亮变化,整个过程时间差不多2s左右 ...

  3. diamond的设计思路

    diamond主要包含四个包:diamond-client.diamond-sdk.diamond-server和diamond-util client就非常简单的进行http的调用server拿数据 ...

  4. storm安装以及简单操作

    storm的安装比较简单,下面以storm的单节点为例说明storm的安装步骤. 1.storm的下载 进入storm的官方网站http://storm.apache.org/,点击download按 ...

  5. 为什么transform对行内元素不生效

    注:赶时间的同学可直接下拉到底,看结论. 我使用transform对一个元素进行位移,代码如下: <div class="box"> <span>今天你吃了 ...

  6. 修改tomcat默认端口号

    修改tomcat端口号 端口修改tomcat tomcat服务器的默认端口号是8080 1 只启动一个tomcat的情况 当我们不想使用8080端口,需要修改为其他端口时,我们可以: 1, 打开tom ...

  7. 机器学习与Tensorflow(1)——机器学习基本概念、tensorflow实现简单线性回归

    一.机器学习基本概念 1.训练集和测试集 训练集(training set/data)/训练样例(training examples): 用来进行训练,也就是产生模型或者算法的数据集 测试集(test ...

  8. 03-02 Java键盘录入

    键盘录入基本格式: /* 为了让程序的数据更符合开发的数据,我们就加入了键盘录入. 让程序更灵活一下. 那么,我们如何实现键盘数据的录入呢? A:导包 格式: import java.util.Sca ...

  9. Docker 镜像安装 GitLab 中文社区版

    docker run \ --detach \ --publish : \ --publish : \ --name gitlab \ --restart unless-stopped \ --vol ...

  10. jieba分词(2)

    结巴分词系统中实现了两种关键词抽取法,一种是TF-IDF关键词抽取算法另一种是TextRank关键词抽取算法,它们都是无监督的算法. 以下是两种算法的使用: #-*- coding:utf-8 -*- ...