Docker容器运行基本命令
docker rmi 删除镜像
# 根据 ID 删除,也可以同时指定多个 ID docker rmi -f IMAGE ID # 递归删除所有镜像docker rmi -f $(docker images -aq)
新建容器并启动
docker run [可选参数] image # 参数说明--name="Name" 容器名称 tomcat01 tomcat02 用来区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -P 指定容器的端口 -p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口 (常用的) -p 容器端口 -p 随机指定端口 # 测试 启动并进入容器 [root@VM_0_15_centos ~]# docker run -it centos /bin/bash r# 查看运行中的容器docker ps
查看日志
docker logs -tf --tail 10 容器 ID -tf # 显示日志 --tail number # 显示日志的条数
查看容器中进程的信息 ps
docker top 3e77e2715543
查看镜像的元数据
docker inspect 容器id
进入当前正在运行的容器 (exec)
docker exec -it 容器id [root@VM_0_15_centos ~]# docker exec -it 3e77e2715543 /bin/bash docker attach 容器Id # 进入当前正在进行的命令行 # docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用) # docker attach # 进入容器正在执行的终端,不会启动新的进程!
从容器内拷贝文件到主机上
docker cp ed828f6c65d8:/home/a.java /home/docker/ docker cp 容器ID:/源文件目录 /本地目录
查看Docker容器内存
docker stats
Docker 镜像讲解
镜像是什么??
镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境 和 基于运行环境开发的软件
所有的应用,直接打包 docker 镜像,就可以直接跑起来
如何得到镜像:
从远程仓库下载
朋友拷贝给你
自己制作一个镜像 DockerFile
Docker 镜像加载原理
UnionFS (联合文件系统)
Docker 的镜像实际由一层一层的文件系统组成,这种层级的文件系统 UnionFS
虚拟机分钟级启动
容器是秒级启动
提交镜像
commit 镜像
docker commit 提交容器成为一个新的副本 # 同 git docker commit -m='描述提交的信息' -a="作者" 容器 id 目标镜像名:[TAG]
实战测试
# 启动一个默认的 tomcat # 发现这个默认的 tomcat 是没有 webapss应用, webapss 是没有文件的 # 我将文件进行了 拷贝 # 将我们操作过的容器通过 commit 提交作为一个镜像! 我们以后使用我没呢修改过的镜像即可 docker commit -a="Gorit" -m="add webapps" images ID 修改过的容器名称:1.0
[root@xm-cloud ~]# docker commit -m='test' -a='xm-cloud.cn' 9f2e8799f824 1.0 sha256:c37b3fc7e30830f1d7b03fe11a7ef826d9b44569d0e6768377dc0b76d8bc1168 [root@xm-cloud ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 1.0 latest c37b3fc7e308 3 seconds ago 72.9MB ubuntu latest d70eaf7277ea 4 weeks ago 72.9MB
保存当前容器的状态,可以通过 commit 提交,获得一个镜像,就好比云服务器的快照
注意:不是上传到Docker官方仓库!!!
容器数据卷
docker 的理念:
将应用于环境打包成一个镜像
数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据持久化
MySQL,容易删除,删库跑路! 需求:MySQL 数据可以存储在本地!
容器之间有一个可以数据共享的技术! Docker 容器中产生的数据,同步到本地!
这就是卷技术! 目录的挂载,将容器中的目录,挂载在 Linux 上面!
总结:容器的持久化和他同步操作!容器间也是可以数据共享的
使用数据卷
方式一 : 直接使用命令来挂载 -v
docker run -it -v 主机目录: 容器内目录 # 测试 docker run -it -v /home/ceshi:/home centos /bin/bash
容器之间的同步是双向的,我们以后只需要在本地修改即可,容器自动同步