5.5 Docker常用操作

1. 查看容器的主机名

[root@docker ~]# docker run -it --name t1 --rm busybox
/ # hostname
394a2c0539f5

2. 在容器启动时注入主机名

[root@docker ~]# docker run -it --name t1 --hostname busybox --rm busybox
/ # hostname
busybox
/ # cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	busybox		# 注入主机名时会自动创建主机名到IP的映射关系
/ # cat /etc/resolv.conf
options timeout:2 attempts:3 rotate single-request-reopen
; generated by /usr/sbin/dhclient-script
nameserver 100.100.2.136	# DNS也会自动配置为宿主机的DNS
nameserver 100.100.2.138
/ # ping www.baidu.com
PING www.baidu.com (220.181.38.150): 56 data bytes
64 bytes from 220.181.38.150: seq=0 ttl=51 time=8.225 ms
64 bytes from 220.181.38.150: seq=1 ttl=51 time=8.367 ms

3. 手动指定容器要使用的DNS

[root@docker ~]# docker run -it --name t1 --hostname busybox --dns 114.114.114.114 --rm busybox/ # cat /etc/resolv.conf 
nameserver 114.114.114.114
options timeout:2 attempts:3 rotate single-request-reopen
/ # nslookup -type=a www.baidu.com
Server:		114.114.114.114
Address:	114.114.114.114:53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com
Name:	www.a.shifen.com
Address: 180.101.49.12
Name:	www.a.shifen.com
Address: 180.101.49.11

4. 手动往/etc/hosts文件中注入主机名到IP地址的映射

[root@docker ~]# docker run -it --name t1 --hostname busybox --add-host www.a.com:1.1.1.1 --rm busybox
/ # cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
1.1.1.1	www.a.com
172.17.0.2	busybox

5. 开放容器端口

执行docker run的时候有个-p选项,可以将容器中的应用端口映射到宿主机中,从而实现让外部主机可以通过访问宿主机的某端口来访问容器内应用的目的。

-p选项能够使用多次,其所能够暴露的端口必须是容器确实在监听的端口。

-p选项的使用格式:

  • -p <containerPort>
    • 将指定的容器端口映射至主机所有地址的一个动态端口
  • -p <hostPort>:<containerPort>
    • 将容器端口<containerPort>映射至指定的主机端口<hostPort>
  • -p <ip>::<containerPort>
    将指定的容器端口<containerPort>映射至主机指定<ip>的动态端口
  • -p <ip>:<hostPort>:<containerPort>
    • 将指定的容器端口<containerPort>映射至主机指定<ip>的端口<hostPort>

动态端口指的是随机端口,具体的映射结果可使用docker port命令查看。

[root@docker ~]# docker run --name web --rm -p 80 nginx

以上命令执行后会一直占用着前端,新开一个终端连接来看一下容器的80端口被映射到了宿主机的什么端口上

[root@docker ~]# docker port web
80/tcp -> 0.0.0.0:32768
[root@docker ~]# ss -anlt
State       Recv-Q Send-Q  Local Address:Port                 Peer Address:Port              
LISTEN      0      128                 *:22                              *:*                  
LISTEN      0      128              [::]:32768                        [::
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值