Docker命令

Docker容器的启动

docker run hello-world

Docker命令_第1张图片

启动流程:

Docker命令_第2张图片

查找本地的容器

docker ps -a	

容器运行的本质

Docker容器存在的意义就是为了运行容器中的应用,对外提供服务,所以启动容器的目的就是启动运行该容器中的应用。容器中的应用运行完毕后,容器就会自动终止。所以,如果不想让容器启动后立即终止运行,就需要使容器应用不能立即结束。通常采用的方式有两种,使应用处于与用户交互的状态等待状态

以交互的方式运行

docker run --name myubuntu -it ubuntu /bin/bash
docker run --name mytom -it tomcat:8.5.49 /bin/bash

Docker命令_第3张图片

Docker命令_第4张图片

端口映射

docker run --name mytom3 -it -p 8081:8080 tomcat:8.5.49
//端口为8080映射到宿主机上为8081  -p 8081:8080
docker run --name mytom5 -it -P tomcat:8.5.49//让系统分配端口

为什么需要端口映射?

因为每一个docker容器都相当于一个操作系统,假设我要启动tomcat,tomcat的默认端口号是8080,但由于我是在不同的容器启动的tomcat,自然不会发生端口冲突,但是这都只是在容器当中的,当用户需要访问8080的tomcat的时候,宿主机应该去找哪个容器呢?所以就需要端口映射。

Docker命令_第5张图片

Docker命令_第6张图片

随机端口

Docker命令_第7张图片

分配的端口为32768

如何退出

Ctrl+p+q

Docker命令_第8张图片

依旧正在运行。

以守护进程方式运行

docker run --name myubuntu -d ubuntu /bin/bash

Docker命令_第9张图片

对高版本tomcat的访问

docker run --name mytom6 -p 8081:8080 -it tomcat:8.5.50

为什么找不到?

Docker命令_第10张图片

因为webapps当中根本没有东西。

内容都在webapps.dist当中了。

Docker命令_第11张图片

docker exec -it mytom1 /bin/bash      //进入容器
mv webapps.dist/* webapps       //把dist下的所有文件移动到webapps中

Docker命令_第12张图片

docker top

用于查看有哪些容器在运行

docker top mytom1

Docker启停命令

启动

docker start xxx
docker unpause xxx

重启

docker restart xxx

停止

docker stop xxx
docker pause xxx   //暂停对外提供服务

强制停止

docker kill xxx

暂停所有正在运行的容器

docker stop $(docker ps -q)
docker kill $(docker ps -q)

docker ps -q 用于输出所有正在运行的容器的ID

docker cp

docker cp test.txt mytom1:/root  //宿主机拷贝到容器
docker cp mytom1:/root/test.txt ./  //容器拷贝到宿主机

但是不支持容器之间的拷贝

docker rm

docker rm -f $(docker ps -aq)

docker ps -aq:查询并显示所有(包括未运行的)Docker 容器的唯一标识符(ID)

docker commit

docker commit -a "Hayaizo" -m "Added net-tools" mycentos centos7:net-tools

Docker命令_第13张图片

容器的导入导出

docker export导出

docker export -o tom8-export.tar mytom

docker import导入

docker import tom8-export.tar tom8:export

Docker命令_第14张图片

为什么会比原来的镜像要小?

因为丢弃了原镜像的所有历史记录与元数据

容器/镜像的导出和导入的区别

export与save

  • export作用于容器,save作用于镜像,但是他们导出的结果都为tar文件
  • export一次只能对一个容器进行导出,save一次可以对多个镜像进行导出
  • export只是对当前容器的文件系统快照进行导出,其会丢弃原镜像的所有历史数据信息,save则是保存了原镜像的完整记录

import和load

  • import导入的容器包,load加载的是镜像包,但最终都会恢复为镜像
  • import恢复为的镜像只包含当前镜像一层,load恢复的镜像与原镜像的分层完全相同
  • import恢复的镜像是新构建的镜像,与原镜像的Image ID不同,load恢复的镜像与原镜像是同一个镜像,Image ID相同
  • import可以为导入的镜像指定,而load加载的镜像不能指定,和原镜像保持一致。

commit和export

  • 相同点:docker export + docker import 会将一个容器变为一个镜像,docker commit 也可以将一个容器变为一个镜像。
  • 不同点:docker export + docker import 恢复的镜像仅包含原容器生成的一层分层,docker commit生成的镜像中包含容器的原镜像的所有分层的信息。

docker system

docker system df   //查看docker磁盘使用情况
docker system events   //相当于日志
docker system info    //信息
docker system prune   //移除所有没有这个镜像相应的容器存在

docker create

docker create --name mytom -p 8081:8080 tomcat:8.5.49

create仅仅创建容器,不启动。

你可能感兴趣的:(Docker,docker,容器,运维)