「实践出真知」,话不多说,直接开干!
环境:
centos # 1、vmare自己搭一个 2、阿里云或者腾讯云买一个,新用户很便宜的 docker 复制代码
docker 安装
# 在线安装 yum install docker 复制代码
Dockerfile
在home/demo目录创建一个Dockerfile
# An example Dockerfile for installing Git on Ubuntu FROM ubuntu:latest LABEL maintainer="dia@allingeek.com" RUN apt-get update && apt-get install -y git ENTRYPOINT ["git"] 复制代码
构建镜像
命令最后有个. 注意看!!!
# -t 指定镜像名称 # -f 制定Dockerfile所在的目录 # . 代表指定镜像构建过程中的上下文环境的目录 docker build -t test/myapp -f /home/demo/Dockerfile . 复制代码
查看镜像是否构建成功
docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/myapp latest ce7b2e1448f3 39 hours ago 198 MB 复制代码
运行容器
docker run myapp # 成功输出git命令 就表示ok了 usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>] 复制代码
docker ps -a 代表曾经来过
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c87b12a5334 test/myapp "git" 3 minutes ago Exited (1) 3 minutes ago silly_lichterman 复制代码
恭喜你!完成了第一关的考验!come on!
Docker是一个用于开发、交付和运行应用程序的开放平台。Docker能够将「应用程序从基础设施中分离出来,可以快速交付软件」。使用Docker就可以像「管理应用程序一样管理基础设施」。通过利用Docker技术「快速交付」、「测试」和「部署代码」的优势,可以显著「减少编写代码和在生产环境中运行代码之间的时间」。
镜像就像一个安装包 容器就是安装好之后的软件,你可以启动、停止、删除它
容器在宿主机上运行,并与其他容器共享主机的内核。本质上是一个运行的进程,不占用比任何其他可执行文件更多的内存,这使得它是轻量级
的。
相对的,虚拟机(VM)运行一个完整的操作系统,通过管理程序虚拟访问主机资源。通常,虚拟机会产生比应用程序所消耗的更多的开销。
Docker Engine是一个客户端-服务器应用程序,具有以下主要组件:
1.一个长期运行的后台服务,称为守护进程(dockerd命令)。
2.一个REST API,应用程序与守护进程对话并指示它做什么的接口。
3.一个命令行工具(CLI,docker命令)。
docker registry
是存储镜像的仓库。Docker Hub
是任何人都可以使用的公共镜像仓库,默认情况下docker
会从Docker Hub
里面去查找镜像。同时用户可以自定义私有的仓库。
当使用docker pull
或者docker run
命令的时候,会从配置好的镜像仓库去拉取指定镜像。docker push
命令则会将镜像推送到配置的仓库。
# 镜像搜索 不实用,没法获取镜像tag。推荐直接去Docker Hub上查找 docker search # 拉取镜像 docker pull centos docker pull [OPTIONS] NAME[:TAG|@DIGEST] # 镜像列表 docker images # 删除镜像 docker rmi hello-world docker rmi # 设置新的版本号 docker tag hello-world:latest hello-world:1.0.0 docker tag # 导出镜像 docker save -- docker save命令只能打包镜像,没有压缩 -- 可以使用gzip -c压缩(会延长加载时间)# docker save hello-world:latest | gzip -c > hello_v3.tar.gz -- save时最好指定版本/tag # 导入镜像 docker image load -i hello_v3.tar.gz docker load -i # 推送镜像 docker push host:port/hello-world:1.0.0 docker push -- push可以将本机镜像推送到特定镜像仓库 -- 比如公共Docker Hub(需要docker login)或者私有仓库(Docker Registry,指定host和port) # 清除所有tag为 <none> 的镜像 docker rmi $(docker images | grep "<none>" | awk -F' ' '{print $3}') 或者 docker images|grep "<none>" | awk '{print $3 }'| xargs docker rmi --force # 删除未使用镜像 docker image prune 复制代码
# 查看镜像列表 docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 831691599b88 5 weeks ago 215 MB # 运行容器 docker run docker.io/centos 或者 docker run 831691599b88 # 查看正在运行的容器 docker ps # 停止容器 docker stop # 重启容器 docker restart # 查看容器日志 docker logs # 查看容器详细信息 docker inspect # 移除容器,如果正在运行,先暂停容器 docker rm # 移除所有不在运行的容器 docker container prune # 停止所有容器 docker ps -aq | xargs docker stop # 移除所有容器 docker ps -aq | xargs docker rm # 移除所有已退出容器 docker ps -a | grep "Exited" | awk '{print $1 }'| xargs docker rm # 备份容器到镜像,生成一个容器的快照 docker commit -p 831691599b88 container-backup 复制代码
https://poleljy.gitee.io/iCoding/
https://docs.docker.com/engine/reference/run/
本文使用 mdnice 排版