docker-端口映射

端口映射

# docker的端口可以和宿主机端口进行映射,从而达到内部服务不变,复用宿主机端口的目的

# 1. 随机映射
docker run -p 80 ubuntu bash
# 该方法会进行随机映射,确定的是容器内部的端口为80,但是宿主机端口不定
# 需要查看信息后得知,查看办法后面有讲解

# 2. 绑定映射
docker run -p 8080:80 ubuntu bash
# 用冒号:分隔,前者是宿主机端口,后者是容器映射端口
# 该方法需要注意宿主机端口占用, lsof -i:8080 差看端口是否被占用

# 3. ip绑定,随机映射
docker run -p 127.0.0.1:80 ubuntu bash
# 该方法在ip访问时,会对ip进行限制,但是端口仍然是随机绑定映射

# 4. ip端口全绑定
docker run -p 0.0.0.0:8080:80 ubuntu bash
# 恩...,就是你想的那样

端口查看

# 容器全属性
docker inspect contain_name
# json文件,慢慢翻

# 页面列表
docker ps
# 找到指定容器,PORTS属性能看到端口绑定

# 直接获取
docker port contain_name
# 直接过滤出端口映射

容器重启

# 说这个没有什么别的意思,主要是结合后面讲解一下外挂进程
# 说一说前面不只是bash进入容器这么简单是什么意思
docker stop contain_name
docker kill contain_name
docker start contain_name

外挂进程

# 进入容器?
docker exec -it contain_name
# 可能之前的说明有些误区,不算错,但也不太清楚

# 启动容器内nginx服务
docker exec contain_name nginx
# 这个就简单明了了
# 除去前面的 -it 的运行方式
# exec就是指定容器,运行指定命令而已
# 毕竟,linux上每运行一个命令,也算是一个进程,也就是让指定容器运行命令的办法而已
# exec就这么个东西,别太小看,也别高看

外部访问

容器映射完毕,一般访问的话,分外部和内部吧

内部访问,其实就和直接用linux没啥区别,这个可以跳过

外部访问:
1. 宿主机ip访问:通过宿主机ip:宿主机映射端口,就可以访问到容器内部服务
2. 容器ip访问:通过inspect查看映射,通过容器ip:容器port,也可以直接进行访问 

一些谬误

纠正一些之前的谬误

关于外挂进程
    之前没说明白,可能我概念也没梳理太清
    与其说外挂,换成简单的命令运行更恰当
    只是由此注意到了两个有些忽略的点
    1. 运行方式:-i -t 之前没太用心,但是运行形态变化可能会让我们对一个命令产生误解
    2. 所谓进程: 能够执行的就是进程,大多的命令,服务启动,都算是,不用太曲解,一般linux的用法即可
    3. 所谓外挂: 其实就是让容器中多一个进程,并不是把一个进程归类到一个容器,而只是让容器新增了一个进程
    4. 外挂进程: 外部操作,指定容器运行指定命令,就此而已,需要注意的是这个命令容器内部必须存在

关于容器内容修改
    关于容器写入这段,我好像小题大做了,也说明了我概念的不清晰
    1. 不可写的是镜像,而不是容器
    2. 容器重启数据不丢失,通过镜像启动容器,上个容器写入数据...(丢人啊,这哪来的毛关系)
    3. 只有需要通过镜像启动容器时需要保留的东西才新建镜像(丢人啊,两个镜像的事情,哪来什么关系)
    4. 关于保存,实在要留下的改动就创建镜像,更甚就仓库存档,一般的话保证不把容器删除就行了

 

你可能感兴趣的:(docker)