学Docker(2)

镜像

查看本地镜像docker images

在镜像仓库获取一个新的镜像docker pull imageName

下载好后可以使用这个镜像了docker run imageName

删除镜像docker rmi imageName

创建镜像:镜像库中下载的镜像不能满足我们的需求时,可以通过下面两种方式对镜像进行修改:

1.从已经创建的容器中更新镜像,并提交

首先用当前镜像创建一个容器,docker run -it imageName /bin/bash

在运行容器内使用apt-get update来更新,完成后exit命令来退出容器

runoob@runoob:~$ docker commit -m="has update" -a="runoob" containerID TargetImageName

-m:提交的描述信息

-a:指定镜像作者

2.使用Dockerfile指令来创建一个新的镜像

从零开始创建一个新镜像,我们需要创建一个Dockerfile文件,vim打开文件后输入以下内容

FROM    centos:6.7
MAINTAINER      **** "******@***.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D


runoob@runoob:~$ docker build -t runoob/centos:6.7 .

每一条指令都会在镜像上创建一个新的层,每个指令的前缀都必须是大写

From指定是哪个镜像源

MAINTAINER镜像是谁写的,姓名+邮箱

RUN指令告诉docker在镜像内执行什么命令,安装了什么

Dockerfile文件通过docker build命令来构建一个镜像

EXPOSE暴露端口配置

CMD指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

-t:我们要指定的镜像名

.:镜像位置

得到结果如下图所示:

 查看当前所有的镜像,发现已有我们新建的镜像了:

 tag设置镜像标签docker tag NewTagName ImageName:NewTagName

容器连接

外部访问容器内部应用可以通过-P-p参数来指定端口映射。

-P是容器内部端口随机映射到主机端口

-p是容器内部端口绑定到指定的主机端口

例如:创建python应用容器,使用-P绑定网络地址后,查看进程可以看到其端口绑定关系为主机端口3276->容器端口5000

 利用-p指定端口绑定,比如绑定到127.0.0.1

 这样我们可以通过访问127.0.0.1:5001来访问容器的5000端口,此种方法是默认绑定TCP端口,如果要绑定UDP端口,可以在端口后加上/udp,即

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

查看容器端口绑定情况:docker port containerName portNum

容器关联

端口连接并不是唯一一种容器连接的方法,docker有一个连接系统可以将多个容器连接在一起,共享连接信息,docker连接会创建一个父子关系,其中父容器可以看到子容器的信息。

下面新建一个Docker网络,-d:参数指定 Docker 网络类型,有 bridge、overlay。创建好后查看全部网络的列表。

runoob@runoob:~$ docker network create -d bridge NetworkName

runoob@runoob:~$ docker network ls

结果示意图如下:

 此时,运行test1容器和test2容器,并连接到新建的test-net网络

runoob@runoob:~$ docker run -itd --name test1 --network test-net ubuntu /bin/bash
runoob@runoob:~$ docker run -itd --name test2 --network test-net ubuntu /bin/bash

下面通过Ping来证明test1容器和test2容器建立了互联关系,同理可验证test1

runoob@runoob:~$ docker exec -it test1 /bin/bash
进入test1容器
root@******:/# ping test2

结果如下:

 这样test1容器和test2容器就建立了互联关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值