来源:https://docker-curriculum.com/ 这篇文章不错,可以作为第一篇 docker 的入门,我简单总结了下。顺便重温下之前的内容。 如果你是刚学docker,最好跟着敲一遍。
docker pull busybox
去官方拉镜像
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。
简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。docker images
查看镜像docker run busybox
会看到啥都没有发生,因为没有提供任何命令,容器启动后,运行个空命令就退出了。docker run busybox echo "hello from busybox"
这个能看到输出了,但是容器执行完依然退出了。docker ps
没有任何输出
试试 docker ps -a
可以看到刚刚运行过的容器了,注意 status 列image.png
docker run -it busybox sh
注意 -it 一般是同时出现的image.png
-t tty的缩写 终端控制台
-i interactive 可交互缩写
如果想知道 run 后面都能带什么参数及含义,请使用 docker run --help
docker run --rm prakhar1989/static-site
prakhar1989/static-site 是作者维护的镜像
--rm 当退出容器时自动移除
这里容器启动会显示了 nginx is running,但没有告诉更多的信息
image.png 按 ctrl+c 退出
docker run -d -P --name static-site prakhar1989/static-site
-d 放到后台运行
-P 将容器内应用运行使用的端口暴露出来 ( Publish all exposed ports to random ports)
--name 给容器起个名字image.png
端口有了,可以打开站点了,还可以使用 docker run -p 8888:80 prakhar1989/static-site
指定端口
image.png
同时运行了两个容器
image.png
docker stop static-site
static-site 是我们给运行时给容器起的名字,也可以用ID$ docker network ls
NETWORK ID NAME DRIVER SCOPE
c2c695315b3a bridge bridge local
a875bec5d6fd host host local
ead0e804a67b none null local
默认使用的是 bridge 桥接。使用 docker network inspect bridge
在 Containers 下面看到正在使用该网络方式的所有容器。默认所有的容器都会使用bridge,通过刚才的命令还可以看到每个容器分配到的内部IP。 一般是 172.17.0.xx。 为了安全及方便,我们需要使某几个容器之间使用自己的桥接网络,如何做到呢?
docker network
创建一个新的bridge网络,比如 docker network create foodtrucks-net
image.png
docker run -d --name es --net foodtrucks-net -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker run -it --rm --net foodtrucks-net finleyma/foodtrucks-web bash
来测试下能否访问到 Elasticsearch 容器
curl es:9200
tips: 访问容器网络没有输入容器的IP地址,用的容器名称表示,这种能力叫 automatic service discovery备注:elasticsearch挺占内存的,我服务器4G内存,在docker运行启动后出现了警告