Docker三大概念之一:容器

容器是docker的另一个核心概念。
是镜像的一个运行实例,所不同的是,它带有额外的可写文件层。也许虚拟机是模拟运行的一整套操作系统(提供了运行环境和其他系统环境),那么docker容器就是独立运行的一个或一组应用,以及它们的必需运行环境
可以使用docker ps -a -q查看处于终止状态的容器的id
在这里插入图片描述
查看运行的容器
docker ps [-a] [-l]
在这里插入图片描述
以守护形式运行容器:
docker run -i -t IMAGE /bin/bash
Ctrl +p Ctrl+Q
附加到运行中的容器
docker attach 容器名
启动守护式容器:
docker run -d 镜像名[command][ARG…]
参数 -d是以后台运行

在这里插入图片描述
在这里插入图片描述

docker top NAME 命令查看容器运行状态
在这里插入图片描述

在运行的容器内启动新进程
docker exec [-d][-i][-t] 容器名 [COMMAND][ARG…]
在这里插入图片描述
docker top 查看运行容器的内容
在这里插入图片描述

停止守护式容器
docker stop 容器名
会发送命令到容器,然后结束
docker kill 容器名
直接杀死容器进程

守护式容器总结
CTRL +p CTRL +Q 快捷键,将交互式的容器转到后台
docker run -d 如何启动守护式容器
docker logs 查看守护式容器log信息

设置容器的端口映射

在这里插入图片描述
端口映射实现访问容器应用
在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的
当容器中运行一些网络应用时,要让外部访问到这些应用时,可以通过-P或-p参数来指定端口映射。-P会随机指定一个端口至容器内部开放的网络端口

sudo docker run -d -P training/webapp python app.py

在这里插入图片描述
此时可以看到主机的32768被映射到了容器的5000端口。访问宿主机的32768可以访问容器内应用提供的界面。
http://127.0.0.1:32768
在这里插入图片描述
映射所有接口地址
使用hostPort:ContainerPort将本地的5000端口映射到容器的5000端口,命令如下:

sudo docker run -d -p 5000:5000 training/webapp python app.py

此时默认会绑定本地所有接口的所有地址,多次使用-p可以绑定多个端口。如:

sudo docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py

映射到指定地址的任意端口
使用ip:hostPort:containerPort格式指定映射一个特定地址,比如localhost地址 127.0.0.1;:

sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python python app.py

映射到指定地址的任意端口
使用ip::containerPort绑定loclhost的任意端口的5000端口,本地主机会自动分配一个端口:
sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py
还可以使用udp标记来指定udp端口:
sudo docker tun -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
查看映射端口配置
使用docker port 来查看当前映射的端口配置,也可以查看绑定的地址:

sudo docker port  [CONTAINER ID]

如图
在这里插入图片描述

容器互联实现容器间通信

自定义容器命令
使用 --name如:

docker run -d -p --name web training/webapp python app.py

使用ps查看
在这里插入图片描述
也可以使用docker inspect 来查看容器的名字
sudo docker inspect -f “{{.Name}}” d175140432

在执行run时可以加–rm参数,此参数的作用是在容器终止后会立即删除,-d和–rm不能同时使用
使用 --link 参数可以让容器之间安全进行交互
栗子:
先创建一个新的数据库容器:

sudo docker run -d --name db training/postgres

然后创建一个新的web容器,并将它连接到db容器:

sudo docker run -d -p --name web --link db:mydb tarining/webapp python app.py

–link 参数的格式为 --link name:alias,其中name是要连接的容器的名字,alias 是这个连接的自定义别名
在这里插入图片描述
使用env命令查看web容器的环境变量:

sudo  docker run --rm --name web2 --link db:db training/webapp env

.
其中MYDB_开头的是供web容器连接db容器使用,前缀采用大写的连接别名。
处了环境变量,Docker还添加host信息到父容器/etc/hosts

在这里插入图片描述
最后两排的hosts信息,第一个是是mydb容器的ip和主机名
第二个是web容器,web容器用自己的id作为默认主机名
可以在web容器中安装ping命令来测试与db容器的连通:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值