可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 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
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
运行容器以后,能够用 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 【网络名】
// 运行第一个容器并连接到刚刚建立的网络 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已经连接了。