docker(4)-容器

镜像是静态文件,当启动镜像时,会创建一个容器来运行镜像中的内容,容器相当于镜像的一个实例。

创建和启动容器

  • docker create -i --name c1 openjdk:8:基于openjdk:8镜像创建容器,容器名为c1,-i是保持标准输入流,后面会看到效果。
  • docker ps -a:ps只能查看运行中的镜像,加-a可查看所有镜像。默认执行了命令bash
  • docker start c1:启动一个处于停止状态的容器,此时状态栏从Created变成了UP运行中。如果创建时没有-i参数,此时执行完bash命令后就会停止容器,状态栏会是退出。指定的c1容器名也可以用容器id替代

  • docker run -id --name c2 openjdk:8:run命令相当于先create再start,多了个-d选项是在后台运行,结果和上面一样。

  • docker restart c1:重启容器

进入运行中的容器

  • docker attach c1:进入c1容器内部,可执行各种命令如ps。要退出可执行exit,但容器状态也会停止。

  • docker exec c2 ps:进入c2容器执行一条命令ps,执行完后会回到当前环境,不用exit不会停止容器。

  • docker exec -it c2 bash:也可以通过bash打开容器命令行,-i上面说过可保持持续输入,-t生成一个新的终端,注意看bash的PID变成了26而不是上面的1。exit退出26的终端,但是1的终端仍然在运行,所以不会退出容器,

停止容器

  • docker stop c1:停止容器,状态会变成Exited,这和Created状态是一样的,都是停止。可以再次start
  • docker pause c1:暂停容器,状态会变成暂停
  • docker unpause c1:从暂停中恢复,状态恢复成运行

查看容器

  • docker logs c2:查看容器日志输出
  • docker inspect c2:查看容器详情
  • docker top c2:相当于linux的top命令
  • docker stats c2:统计cpu、内存、磁盘等使用状况,这个输出内容是会动态更新的。
  • docker diff c1:查看容器内部发生过变更的文件或目录,如下,我在c1中创建了test文件,这里A开头表示添加,C表示变更,D表示删除

删除容器

  • docker rm c2 -f:如果没有-f,只能删除已经停止的容器。删除运行的容器会报错,加-f会先停止再删除。

  • docker container prune:批量删除所有停止状态的容器。

变更配置

  • docker update c1 -c 100:变更c1配置,比如-c 100是这个容器占用cpu权重份额为100。这个配置在创建启动时就可以声明,这里是修改这个配置。还有其他配置如内存等,可自行查看docker update --help。

映射访问端口、复制文件

  • docker run --name c3 -id -p 8080:8080 openjdk:8:创建运行新的c3容器,这里多了-p,将宿主机端口映射到容器端口,8080:8080前面是宿主机端口,后面是容器端口

  • docker cp /root/hello.jar c3:/:将宿主机的hello.jar文件复制到c3容器的/目录。从容器复制到宿主机也是这个命令,第一个参数是源文件,第二个参数是要复制到的位置。
  • 这个文件是一个spring boot项目,端口8080,访问时会响应hello world。现在通过exec -d在后台将它运行起来,在ps中就可以查看到java进程

过几秒种启动完成,在浏览器就可以通过宿主机的IP来访问这个项目了,如下,这里关掉了宿主机的防火墙

基于容器创建镜像

  • docker commit c3 hello:1:将容器c3打包成镜像hello:1,通过这个镜像启动时,可以直接启动项目,而不需要再次复制项目文件,不需要再执行java -jar。非常便于迁移复用

  • docker run --name c4 -id -p 8082:8080 hello:1 java -jar hello.jar:用hello:1镜像创建启动c4容器,而且执行java -jar hello.jar,如下的COMMAND中可以看到不再是bash

  • 此时宿主机的8080映射到c3的8080项目,8082映射到c4的8080项目,两个端口分别访问不同的实例。而c3和c4的项目在各自容器内部运行,即使端口8080一样,并不会引起冲突。

基于文件导出导入

  • docker export -o c.tar c4:将c4容器导出为文件c.tar
  •  docker import c.tar hello:2:将c.tar文件导入为镜像hello:2

命令帮助

在命令后面加--help可查看帮助,比如docker ps --help

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值