目录
Docker简介
是什么
解决了运行环境和配置问题软件问题,方便做持续继承并有助于整体发布的容器虚拟化技术
能干嘛
去哪下
Docker安装
前提说明
Docker的基本组成
安装步骤
永远的HelloWorld
Docker的常用命令
帮助命令
Docker version Docker info Docker –help |
镜像命令
Docker images 列出本地主机上的镜像 | -a 列出本地所有的镜像(含中间映射层) |
-q 只显示镜像ID | |
--digests 只显示镜像的摘要信息 | |
--no-trunc只显示完整的镜像信息 |
Docker search 搜索某个镜像的名字 | --no-trunc显示完整的镜像描述 |
-s 列出收藏数不小于指定值的镜像 | |
--automated只列出automated build类型的镜像 |
Docker pull下载镜像 | Docker pull images:laster |
Docker rmi XXX | Docker rmi –f ID |
| Docker rmi –f ID:TAG ID:TAG |
| Docker rmi –f $(docker images -qa) |
容器命令
实例:下载centos镜像:docker pull centos
新建并启动容器 Docker exec [OPTIONS] CONTAINER COMMAND [ARG...] | OPTIONS说明(常用):有些是一个减号,有些是两个减号
--name="容器新名字": 为容器指定一个名称; -d: 后台运行容器,并返回容器ID,也即启动守护式容器; -i:以交互模式运行容器,通常与 -t 同时使用; -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用; -P: 随机端口映射; -p: 指定端口映射,有以下四种格式 ip:hostPort:containerPort ip::containerPort hostPort:containerPort containerPort |
列出当前所有正在运行的容器 docker ps [OPTIONS] | OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的 -l :显示最近创建的容器。 -n:显示最近n个创建的容器。 -q :静默模式,只显示容器编号。 --no-trunc :不截断输出。 |
退出容器 Exit | 容器停止退出 |
退出容器 Ctrl+P+Q | 容器不停止退出 |
启动容器 Docker start ID |
|
重启容器 Docker restart ID |
|
停止容器 Docker stop ID |
|
强制停止容器 Docker kill ID |
|
删除已停止的容器 Docker rm ID | Docker rm –f $(docker ps –a -q) Docker ps –a –q | xargs docker rm |
重要命令
启动守护式容器 Docker run –d ID |
|
查看容器日志 Docker logs –f –t –tail ID | -t 加入时间戳 -f 跟随最新的日志打印 --tail+数字 显示最后多少米 |
查看容器内运行的进程 Docker top ID |
|
查看容器内部细节 Docker inspect ID |
|
进入正在运行的容器并以命令行交互 Docker exec –it 容器ID | Exec是在容器中打开新的终端,并且可以启动新的进程 |
| 直接进入容器启动命令的终端,不会启动新的进程 |
从容器内拷贝文件到主机上 | Docker cp 容器ID:容器内路径 目的主机路径 |
小总结
attach | Create a new image from a container changes | 当前 shell 下 attach 连接指定运行镜像 |
build | Copy files/folders from the containers filesystem to the host path | 通过 Dockerfile 定制镜像 |
commit | Create a new container | 提交当前容器为新的镜像 |
cp | Inspect changes on a container's filesystem | 从容器中拷贝指定文件或者目录到宿主机中 |
create | Get real time events from the server | 创建一个新的容器,同 run,但不启动容器 |
diff | Run a command in an existing container | 查看 docker 容器变化 |
events | Stream the contents of a container as a tar archive | 从 docker 服务获取容器实时事件 |
exec | Show the history of an image | 在已存在的容器上运行命令 |
export | List images | 导出容器的内容流作为一个 tar 归档文件[对应 import ] |
history | Create a new filesystem image from the contents of a tarball | 展示一个镜像形成历史 |
images | Display system-wide information | 列出系统当前镜像 |
import | Return low-level information on a container | 从tar包中的内容创建一个新的文件系统映像[对应export] |
info | Kill a running container | 显示系统相关信息 |
inspect | Load an image from a tar archive | 查看容器详细信息 |
kill | Register or Login to the docker registry server | kill 指定 docker 容器 |
load | Log out from a Docker registry server | 从一个 tar 包中加载一个镜像[对应 save] |
login | Fetch the logs of a container | 注册或者登陆一个 docker 源服务器 |
logout | Lookup the public-facing port which is NAT-ed to PRIVATE_PORT | 从当前 Docker registry 退出 |
logs | Pause all processes within a container | 输出当前容器日志信息 |
port | List containers | 查看映射端口对应的容器内部源端口 |
pause | Pull an image or a repository from the docker registry server | 暂停容器 |
ps | Push an image or a repository to the docker registry server | 列出容器列表 |
pull | Restart a running container | 从docker镜像源服务器拉取指定镜像或者库镜像 |
push | Remove one or more containers | 推送指定镜像或者库镜像至docker源服务器 |
restart | Remove one or more images | 重启运行的容器 |
rm | Run a command in a new container | 移除一个或者多个容器 |
rmi | Save an image to a tar archive | 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除] |
run | Search for an image on the Docker Hub | 创建一个新的容器并运行一个命令 |
save | Start a stopped containers | 保存一个镜像为一个 tar 包[对应 load] |
search | Stop a running containers | 在 docker hub 中搜索镜像 |
start | Tag an image into a repository | 启动容器 |
stop | Lookup the running processes of a container | 停止容器 |
tag | Unpause a paused container | 给源中镜像打标签 |
top | Show the docker version information | 查看容器中运行的进程信息 |
unpause | Block until a container stops, then print its exit code | 取消暂停容器 |
version | Create a new image from a container changes | 查看 docker 版本号 |
wait | Copy files/folders from the containers filesystem to the host path | 截取容器停止时的退出状态值 |
Docker镜像
是什么
用来打包软件运行环境和基于运行环境开发的软件
特点
Docker镜像都是只读的
Docker镜像commit操作补充
Docker commit提交容器副本使之成为一个新的镜像
Docker commit –m=“提交的描述信息” –a=”作者” 容器id 要创建的目标镜像名:[标签名] |
案例演示
docker commit -m="new centos from pactera" -a="rui.zhang" 830271c4e052 centos-pactera:1.0.0
Docker容器数据卷
是什么
为了能保存数据在docker中我们使用卷
能干嘛
数据的持久化
容器间继承+共享数据
数据卷
直接命令添加
Docker run –it –v /宿主机绝对路径目录 :/容器内目录 镜像名 |
docker run -it -v /home/docker/column:/demo-test centos-pactera:1.0.0
带全新
docker run -it -v /home/docker/column:/demo-test:ro centos-pactera:1.0.0
docker inspect ID
"Mounts": [ { "Type": "bind", "Source": "/home/docker/column", "Destination": "/demo-test", "Mode": "", "RW": true, "Propagation": "rprivate" } ], |
DockerFile添加
新建DockerFile
FROM centos VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finished,--------success1" CMD /bin/bash |
Build生成镜像
docker build -f DockerFile -t pactera .
启动容器后自动生成了文件
对应的宿主机目录
"Mounts": [ { "Type": "volume", "Name": "7115c7ed85a950b78769e89f09555d66e68d8e37d9d9a18dbbf0494326ff0745", "Source": "/var/lib/docker/volumes/7115c7ed85a950b78769e89f09555d66e68d8e37d9d9a18dbbf0494326ff0745/_data", "Destination": "/dataVolumeContainer1", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }, { "Type": "volume", "Name": "27856267f84bfffea11256a76c9cb0d9efdce8568e7e7afb67c07b79374e5006", "Source": "/var/lib/docker/volumes/27856267f84bfffea11256a76c9cb0d9efdce8568e7e7afb67c07b79374e5006/_data", "Destination": "/dataVolumeContainer2", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ], |
备注
Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可
数据卷容器
命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器
容器间传递共享(--volumes-from)
- 根据新建立的镜像,启动容器
docker run -it --name dc01 pactera
有dataVolumeContainer1 和dataVolumeContainer2两个文件夹
- Dc02/Dc03继承自该容器
docker run -it --name dc02 --volumes-from dc01 pactera
docker run -it --name dc03 --volumes-from dc01 pactera
- Docker kill dc01
- Dc02和dc03照样可以访问数据卷
DockerFile解析
是什么
Dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本
构建步骤:
- 编写docker文件
- Docker build
- Docker run
DockerFile构建过程解析
从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,
* Dockerfile是软件的原材料
* Docker镜像是软件的交付品
* Docker容器则可以认为是软件的运行态。
Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。
DockerFile体系结构(保留字指令)
FROM:基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER:镜像维护者的姓名和邮箱地址
RUN: 容器构建时需要运行的命令
EXPOSE:当前容器对外暴露出的端口
WORKDIR:指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV:用来在构建镜像过程中设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中,将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
COPY src dest
COPY [“src”,”dest”]
VOLUME:容器数据卷,用于数据保存和持久化工作
CMD:指定一个容器启动时要运行的命令,目的和cmd一样,都是在指定容器启动程序及参数
ONBUILD:当构建一个被继承的dockerFile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发
案例
编写
构建
运行
小总结
Docker常用安装
总体步骤
安装Tomcat
安装mysql
安装redis
本地镜像发布到阿里云
本地镜像发布到阿里云流程
镜像的生成方法
将本地镜像推送到阿里云
将阿里云上的镜像下载到本地
附:
Docker linux安装
新建用户,并加入docker组
Groupadd docker
useradd docker -g docker
passwd docker
把docker加入sudoers
Su root
Vi /etc/sudoers
在root下加入
Docker ALL=(ALL) ALL
下载安装脚本
Mv index.html docker-install.sh
Sh docker-install.sh
https://www.cnblogs.com/kingsonfu/p/11576797.html
阿里云镜像