关于docker的基本使用

docker 的镜像命令

查看本地镜像 docker images
查找镜像 docker search image_name 会先从本地查找,再从云端 查找
拉取镜像 docker pull image_name:tag
删除单个镜像 docker rmi -f image_id 删除多个镜像 docker rmi -f image_name1:tag image_name2:tag 删除全部镜像 docker rmi -f $(docker images -qa)

docker 的容器命令(一)基本使用

使用容器的前提是一定要有镜像, 容器就是镜像的实例化.
新建并启动容器 docker run [options] image(镜像名字或者ID) [command]
options说明: 有些是一个减号, 有些是两个的
–name 容器新名字,为容器指定一个名称
-d 后台运行容器,并返回容器ID, 也就是启动守护式容器
-i 以交互模式运行容器, 通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端, 通常与 -i 同时使用
-P 随机端口映射
-p 指定端口映射

简单的使用实例 docker run -it centos:latest /bin/bash 后面的 /bin/bash 写不写, 都是一样的
启动成功后,终端左边会显示容器的ID

列出当前正在运行的容器
docker ps [options]
-a 列出当前所有正在运行的容器+历史上运行过的
-l 显示最近创建的容器
-n 显示最近n个创建的容器
-q 静默模式,只显示容器编号
–no-trunc 不截断输出

docker 容器的命令(二)启动守护式容器以及容器的运行机制

docker run -d centos
 
问题:然后docker ps -a 进行查看, 会发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
 
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如
service nginx start
但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,
这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行
容器的运行命令如果不是那些一直挂起的命令(比如运行top, tail ), 就会自动退出的.
这个是docker 的机制问题.比如web 容器, 以Nginx 为例, nginx 作为后台进程模式运行, 就需要docker 前台也要有运行的应用. 没事干就会退出.

docker 容器的命令(三)

进入正在运行的容器并以命令行交互, 可以用 attach 或者 exec
使用 docker attach 容器ID/容器名字 就可以直接进入启动的容器终端, 不会启动新的进程
使用 dokcer exec -it 容器ID bashShell 就能把进入启动的终端执行shell 脚本, 把shell 脚本的结果返回
如果使用 dokcer exec -it 容器ID /bin/bash 也可以直接进入启动的容器的终端 ,直接 docker exec -it 容器ID bash 也可以

查看容器内运行的进程 docker top 容器ID
查看容器内部细节 docker inspect 容器ID
查看容器日志 docker logs -f -t –tail 100 容器ID
从容器内拷贝文件到主机上 docker cp 容器ID:容器内路径 目的主机路径

容器commit就会成为新的镜像了

docker commit 提交容器副本使之成为一个新的镜像
命令是 docker commit -m “提交的描述信息” -a “作者” 容器ID 要创建的目标镜像名:标签名