常用命令
镜像(image)命令
docker images 列出所有镜像名
repository:表示镜像仓库源
docker image
参数:
-a 列出所有仓库
-q 显示镜像ID
docker search [option] 镜像名
option: -s列出收藏数不小于指定值的镜像
例:docker search -s 30 apache
--no-trunc 显示完整的镜像描述
# 镜像管理
docker image history 镜像名 查看镜像历史分层
docker image inspect 镜像名 查看镜像具体详情
docker pull 镜像名[:TAG] 下载镜像 -f强制删除
镜像存储位置 /var/lib/docker
docker rmi 镜像[:TAG] 删除镜像
docker rmi 镜像1[:TAG] 镜像2[:TAG] 删除多个镜像
docker rmi $ (docker images -qa) 删除全部镜像
docker image save 镜像名 > 镜像名.tar # 导出镜像
docker load < 镜像文件 # 导入镜像
容器(container)命令
新建并启动容器 docker run [options] 镜像 [command][arg]
option说明:
-i 以交互的模式进行启动
-t 分配一个伪终端(进入命令行模式)
--name 容器名 名命容器名
-d 以守护进程方式在后台启动
-p 外部访问端口:docker镜像端口
--cpus 限制cpu可用的资源
列出当前正在运行的容器 docker ps [option]
option:
-l 上一次运行的
-n [num] 上几次运行的
-a 所有的容器
docker stats 容器名 实时查看容器使用率
退出容器 exit 退出容器停止
ctrl + P+Q 退出容器还在运行
重新进入 docker attach 容器id
进入正在运行的容器 docker ecec -it 容器id bash命令
attach 直接进入容器启动命令的终端,不会启动新的进程(进入容器中)
exec 在容器中打开新的终端,并且可以启动新的进程(没有真正进入交互界面)将bash命令结果返回到宿主机
启动容器 docker start 容器id
重启容器 docker restart 容器id
停止容器 docker stop 容器id
强制关闭 docker kill 容器id
获取容器的日志 docker logs 容器名
删除已经停止的容器 docker rm 容器id
删除所有容器 docker rm -f $(docker ps -q)
dicker inspect 容器id 返回json字符
docker cp 文件 容器名:/拷贝到容器位置 拷贝文件到容器
docker 容器名:/路径 宿主机位置 从容器拷贝文件到宿主机
Docker 容器数据卷
实现容器与docker文件共享
1. docker run -it -v 宿主机绝对路径:容器文件路径 镜像
例:docker run -itd -v /usr/local/nginx/html/:/usr/share/nginx/html --name nginx2 nginx
2. 加权限
docker run -it -v 宿主机绝对路径:容器文件路径:ro 镜像
read only 容器内的目录只读
// 容器间共享文件
--volumes-from
docker run -it --name R1 centos
docker run-it --name R2 --volumes-from R1 centos
R2 与 R1 中的 VOLUME (指DockerFile中的colume)文件路径中的文件实现共享
删除R1容器 不会影响R2中的文件类似 共享+复制
结论: 容器之间的配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止.
**DockerFile **
保留字指令
FROM 基础镜像,当前新镜像基于哪个镜像
MAINTAINER 镜像维护这的姓名和邮箱
RUN 容器构建时需要运行的命令
EXPOSE 当前容器对外暴露出的端口
WORKDIR 指定在创建容器后,终端默认登录的进来的工作目录
ENV 设置容器内环境变量
ADD 将宿主机目录下拷贝进镜像 拷贝+解压缩
例:ADD 当前dockerfile文件夹下的文件名 容器中位置
COPY 复制不解压 copy src dest
VOLUME 数据卷
CMD 指定容器启动时要运行的命令 (cmd后可以有多个命令,但只有最后一个生效 会被docker run –it 镜像 [/bin/bash]参数替换)
ENTRYPOINT 指定容器启动时要运行的命令(docker run 之后参数会被追加)
ONBUILD 子镜像继承父镜像时触发 通过新构建的镜像
FROM 父镜像 触发
例
FROM centos
ENV mypath /tmp
WORKDIR $mypath
RUN yun –y install vim
EXPOSE 80
CMD /bin/bash
建立DockerFile
(1) 建立DockerFile文件
FROM centos
VOLUME [‘文件路径’,’文件路径’] 容器内目录卷
CMD /bin/bash
(2) build后生成新的镜像
docker bulid -f DockerFile绝对路径 -t 生成镜像名 .(.表示当前目录)
(3) docker run -it 新镜像名
docker 会自动在宿主机生成对应文件
使用 docker inspect 查看宿主机数据卷位置
Docker history 镜像id 列出镜像历史
重要
启动守护式容器 docker run -d 容器名
查看 docker logs -f -t --tail 容器id -t 加入时间戳 -f 跟随最新的日志
打印 --tail 数字显示最后多少条
查看容器内部进程 docker top 容器id
查看容器内部细节 docker inspect 容器id
从容器内拷贝文件到宿主机docker cp 容器id:容器路径 拷贝到宿主机路径
Docker 镜像
docker commit 提交容器副本使之成为一个新的镜像
docker commit -m=”提示信息” auth=”作者” 容器id 要创建目标镜像名:[标签名]
docker images 会显示生成的新镜像
网络管理
docker network ls 查看网络类型
docker network create 名 创建一个网络
–net设置网络
其它:
问题: 修改镜像加速导致Docker不能启动
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
[root@Dong ~]# service docker start
Redirecting to /bin/systemctl start docker.service
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
[root@Dong ~]# systemctl status docker.service
● docker.service - Docker Application Container Engine
解决: 查看文件系统 /etc/docker/daemon.json 删除里面内容用 空的花括号代替。
{} 保存退出
输入 service docker restart