Docker快速入门(1)

Docker快速入门

简述

可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。
这里必须了解2个很重要的概览:node

  • 镜像
  • 容器

概览一:镜像

镜像能够理解成是光盘同样的东西,载入以后就能够直接使用了。python

下载

docker的镜像能够在哪里下载呢?docker官方提供一个像github同样的仓库来存放docker的镜像。就是dockerhub。在这里能够找到一些官方的镜像或者别人修改过的第三方镜像。
docerkhub地址
至于怎么下载,很简单只要执行如下命令便可linux

docker pull [镜像名]

docker的镜像事实上是有版本区分的在pull的时候能够指定版本。若是不指定默认会下载最新版本。git

docker pull node:10-alpine

成功下载以后,镜像就保存在本机了。github

查看镜像

下载镜像以后怎么查看本身已经有的镜像呢?
执行如下命令以后能够看到本机已经有的镜像。web

docker images

输出信息docker

REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE 
node                   10-alpine           852391892b9f        2 years ago         742MB

运行镜像

接下来就可使用咱们下载的镜像了,运行镜像的命令是:ubuntu

docker run --rm -it [镜像名]

便可运行镜像,能够看到终端已经进入本身的镜像环境了。
这里有两个参数centos

  • --rm,关闭以后自动删除容器。
  • -i,把交互界面保留着。
  • -t,分配一个虚拟的终端。

it通常都是一块儿出现的。
这里能够加上/bin/bash,能够进入容器的终端中。bash

docker run --rm -it [镜像名] /bin/bash

这时终端已经进去容器内了

// 看到容器内部分信息
root@07eac52f677e:/# cat /proc/version
Linux version 4.19.27-linuxkit (root@82332b297024) (gcc version 8.2.0 (Alpine 8.2.0)) #1 SMP Sun Mar 10 18:51:44 UTC 2019

若是要退出就执行exit便可。

概览二:容器

容器能够理解成一个提供给咱们运行镜像的环境。

查看容器列表

在运行镜像以后执行

docker ps -a

能够看到当前的容器列表。
这里参数-a表明查看全部容器。若是不加a只显示正在运行的。
这里须要提到一个参数-d

docker run  -itd [镜像名]

加上d以后运行镜像后会返回容器id。
这是时候执行docker ps -a就能够看到容器列表。

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
0e2ba846e831        node:6.11           "node"              About a minute ago   Up About a minute                       focused_shannon

进入容器

用上面的命令咱们能够知道本身容器的id

docker exec -it [容器id] /bin/bash

这里docker exec是一个进入容器的命令,该命令在退出容器后,容器能够继续执行。此外命令能够直接执行命令。

中止容器

假如咱们须要中止容器时,只要执行docker stop [容器id]便可。

删除容器

假如咱们须要中止容器时,只要执行docker rm [容器id]便可。

数据同步

若是容器中想用本机的内容进行操做能够用-v来把本机的内容挂载到容器内。

docker run -it -v /test:/soft centos /bin/bash

这里在容器的/soft中就会有本机中/test的文件。这里:先后的路径都应该用绝对路径。

网络端口映射

容器中能够运行一些网络应用,要让外部也能够访问这些应用,能够经过 -P-p 参数来指定端口映射。

  • -P :是容器内部端口随机映射到主机的高端口。
  • -p : 是容器内部端口绑定到指定的主机端口。

若是用-P运行容器以后,能够用 docker ps看到端口状况。

// 运行镜像
runoob@runoob:~$ docker run -d -P training/webapp python app.py
fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d

// 查看看端口状况
runoob@runoob:~$ docker ps
CONTAINER ID    IMAGE               COMMAND            ...           PORTS                     NAMES
fce072cc88ce    training/webapp     "python app.py"    ...     0.0.0.0:32768->5000/tcp   grave_hopper

若是是用-p运行容器,能够指定端口映射。

runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0

另外,咱们能够指定容器绑定的网络地址,好比绑定 127.0.0.1。

runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a

查看端口状况

docker port 命令可让咱们快捷地查看端口的绑定状况。

runoob@runoob:~$ docker port adoring_stonebraker 5000
127.0.0.1:5001

网络

上面若是咱们经过端口映射能够搭建一个从容器连接本机的关系。这样就能够经过不一样的容器连接到主机,而后间接连接不一样的容器。这是一些简单程序的方法。若是想要让容器之间直接连接须要可使用【网络】。

新建网络

docker network create -d bridge 【网络名】
  • -d:参数指定 Docker 网络类型,有 bridge、overlay。其中 overlay 网络类型用于 Swarm mode,在本小节中你能够忽略它。

链接容器

// 运行第一个容器并连接到刚刚建立的网络
docker run -itd --name test1 --network test-net ubuntu /bin/bash
// 运行第二个容器并连接到刚刚建立的网络
docker run -itd --name test2 --network test-net ubuntu /bin/bash

此时进入其中一个容器

docker exec -it test1 /bin/bash

用ping来证明容器已经连接

ping test2

能够看到test1和test2已经连接了。

相关文章
相关标签/搜索