Docker容器、镜像、数据卷

  1. Dockerfile中Run指令运行命令时找不到命令
    Run cmd 是在/bin/sh环境中执行命令。
    Run [“cmd”] 是直接使用系统调用exec执行。
    找不到命令时将/bin/sh替换成/bin/bash, 在Dockerfile中添加:
    RUN rm /bin/sh && ln -s /bin/bash /bin/sh

  2. Ubuntu安装命令 RUN apt-get install -y apache2

  3. CMD命令用来设置启动容器时默认运行的命令,命令结束容器就退出了。设置容器启动执行命令并进入 shell,
    CMD sh -c “source /etc/profile && /bin/bash”
    添加文件内容
    RUN echo “export JRE_HOME=${JAVA_HOME}/jre” >> /etc/profile
    Ubuntu系统修改sources.list后,apt出现Unable to locate package, 执行apt-get update。

不要在Dockerfile中启动后台程序,要把后台程序改成前台程序,或者写一个启动脚本,在脚本中启动后台进程。
端口映射
-p localport:containerport

查看容器配置信息
docker inspect containerID

最近运行容器的ID
docker ps -l -q
删除所有的容器
docker rm $(docker ps -a -q)

数据卷

数据卷一旦声明,它的生命周期和声明它的容器就无关了。一个容器引用一个数据卷容器时,并不要求数据卷容器是运行的。数据卷容器可以级联引用。此外,容器的停止和删除都不会导致数据卷本身删除。如果要删除数据卷,需要删除所有依赖它的容器,并且在删除最后一个依赖容器时加入-v标志,
docker rm -v container
可以通过两种方式创建数据卷。
在Dockerfile中,
VOLUME /var/lib/data
但是Dockerfile不支持挂载本地目录到数据卷。
或者在命令行中使用docker run, -v 参数来创建数据卷并将其挂载到容器中。
若只创建数据卷没有挂载相应的目录 -v /data,docker会在/var/lib/docker/vfs/dir下分配一个具有唯一名字的目录对应该数据卷。
指定宿主主机上的某个目录作为数据卷, -v 宿主目录:数据卷:权限, 宿主目录的路径必须是绝对路径。使用宿主当前目录

-v `pwd` : /data

通过挂载本地目录到容器的数据卷,宿主主机对目录的改变会同步反映到容器中,反过来也一样。如果容器内部已经存在相应的数据卷路径,那么挂载宿主目录后,它的内容会被覆盖。
docker也可以将宿主上的单个文件作为容器的数据卷。 -v /docker/file.txt:/file.txt。

容器连接

容器连接包括源容器和目标容器,源容器提供服务。容器连接依赖于容器名,这种容器间的连接比暴露端口的方式更加安全。
docker run –name containerName ,命名容器。
docker run –link containerName:alias ,containerName为源容器名字,alias为这个连接的别名。这种方式只能处理一个宿主上的容器连接。

代理连接

通过代理连接可以解耦两个原本直接相连的容器的耦合性,并且可以跨主机连接。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值