Docker基础
Docker基础
Docker让开发实现自运维! 该片仅为个人理解,整理的学习笔记,供日后使用回忆所作笔记
Docker安装
Docker支持CentOS7(64-bit)和CentOS6.5(64-bit)或更高的版本
前提条件:
CentOS7要求系统为64位,系统内核版本为3.1.0以上
CentOS6.5或更高的版本,系统内核版本为2.6.32-432或更高版本
查看自己系统的内核
uname -r
// 3.10.0-693.2.2.el7.x86_64
查看已安装的CentOS版本信息
cat /etc/redhat-release
// CentOS Linux release 7.4.1708 (Core)
Docker的基本组成
镜像(image)
容器(container)
Docker利用容器独立运行一个或一组应用。容器是用镜像创建的运行实例。它可以被启动,开始,停止,删除。每个容器都是相互隔离的,保证安全的平台。可以吧容器看做一个简易版本的Linux环境
仓库(repository)
仓库用于集中存放镜像文件,类似于GitHub。
仓库和仓库注册服务器的区别:仓库注册服务器上存放着很多很多仓库,每个仓库又都存放着很多镜像,每个镜像有不同的标签
仓库分为公开仓库和私有仓库。国内最大的公开仓库是Docker Hub
国内公开仓库也包括阿里云,网易云等。
关系
仓库存放镜像,镜像生成容器,容器运行服务
镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["镜像加速地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
检测是否成功
ps -ef|grep docker
测试docker拉取并运行镜像
docker run hello-world
Docker常用命令
帮助命令
docker version
docker info
docker --help
镜像命令
docker images
docker images -a // 所有镜像
docker images -q // 所有镜像ID
docker images --digests // 镜像包的摘要信息
docker images --no-trunc // 显示完整的镜像信息
docker search 某个镜像名字 // 从hub.docker.com查询某个镜像
docker pull 某个镜像名字 // 拉取镜像
docker rmi 某个镜像ID // 删除某个镜像
容器命令
- 新建并启动镜像
docker run [options] image [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 control + 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 // 查看容器日志
docker top 容器ID // 查看容器内运行的进程
docker inspect 容器ID // 查看容器内部细节
docker attach 容器ID // 直接进入容器启动命令终端,不会启用新的进程
docker exec -it 容器ID 操作 // 进入正在运行的容器,在容器中打开新的终端,并且可以启动新的进程 docker exec -it 容器ID /bin/bash
docker cp 容器ID:/容器内路径 /主机路径 // 从容器中拷贝文件到主机
补充
docker commit // 提交容器副本使之成为一个新的镜像
docker commit -a="作者" -m="描述信息" 容器ID 要创建的目标镜像名:[标签名]
docker inspect 查看docker配置信息
添加容器数据卷轴
容器与宿主机之间数据共享,当容器停止启动后数据依然共享
docker run -it -v /宿主机目录:/容器目录 镜像名
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 // 带权限
Dockerfile
构建镜像的原材料,命令符为大些
FROM // 基础镜像,当前镜像是基于哪个镜像
MAINTAINER // 作者 + 作者的email
RUN // 构建时需要执行的命令
EXPOSE // 向宿主机暴露出的端口
WORKDIR // 容器的工作目录,工作空间名
ENV // 环境变量 可在后续的RUN指令中使用 MY_PAtH /app 引用:WORKDIR $MY_PAtH
ADD // 拷贝宿主机的文件到容器内,会自动处理URL和压缩包
COPY // 拷贝宿主机文件到容器内 COPY src dest COPY ['src','dest']
VOLUME // 容器数据卷
CMD // 指定容器启动时运行的命令,可以有多个CMD,但只有最后一个生效,CMD会被docker run 之后的参数替换
ENTRYPOINT // 指定容器启动时运行时的命令 区别于CMD的是,ENTRYPOINT会追加docker run 之后的参数
ONBUILD // 触发器,当构建一个呗集成的Dockerfile时运行命令,父镜像在被子镜像集成后父镜像的onbuild被触发
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!