为什么使用docker
对于开发来说,代码在生命周期的不同阶段会部署于不同环境之中。服务开发中部署开发环境,服务测试中部署测试环境,服务上线需部署生产环境,这么多环境情况下,我们需要将每个环境的配置都配置检查以保证服务能够正常运行。环境配置会耗费巨大的人力时间,为了解决环境配置的问题。docker给出如下解决方案:
Java代码–Jar(环境)–打包项目及环境(镜像)–镜像存储(仓库)–下载镜像–运行镜像(容器)
什么是docker
docker是Go语言编写的开源的应用容器引擎(容器化技术)。
docker概念
- 镜像Image:创建docker容器的模板,静态的定义。类似于将小型操作系统及其环境打包成一个安装包。
- 仓库Repository:用于存储镜像的地方。 公有仓库和私有仓库。
- 容器Container:镜像运行的实体。每个实体之间相互隔离。类似于将小型操作系统安装运行。
安装docker
基于centos7安装,安装方式有使用官方脚本自动安装和手动安装。
官方脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
手动安装
- 卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 下载安装包
yum install -y yum-utils
- 设置镜像仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认为官方仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #阿里云仓库
- 安装docker源Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io #ce社区版 ee企业版
- 启动docker
systemctl start docker
- 检查docker是否安装成功
docker version
docker运行hello-word
docker run hello-word #运行hello-word容器
docker images #查看镜像
卸载docker
yum remove docker-ce docker-ce-cli containerd.io #卸载依赖
rm -rf /var/lib/docker #删除资源
docker的常用命令
帮助命令
docker version #显示docker的版本信息
docker info #显示docker的详细信息
docker 命令 --help #帮助命令
镜像命令
dokcer images #查看所有镜像
docker images [可选参数]
#可选参数说明:
#-a 为查看所有镜像
#-q 为镜像id
docker search #镜像搜索
docker search mysql #搜索mysql镜像
docker pull #拉取镜像
docker pull mysql #拉取mysql镜像,默认最新版
docker pull mysql:5.7 #拉取mysql5.7镜像
#上述拉取mysql两个版本的镜像发现第二次拉取时部分文件已存在,这是docker使用了文件联合系统
docker rmi -f 镜像id/镜像name #删除镜像
docker rmi -f $(docker images -aq) #删除全部镜像
容器命令
以centos测试学习
docker pull centos
docker ps [可选参数]#默认列出所有运行的容器
#-a 列出所有容器
#-n=? 列出最近创建的n条容器
#-q 只显示容器id
docker run [可选参数] #运行容器
#可选参数说明:
#--name="name" 容器名
#-d 后台运行
#-it 使用交互方式运行,进入容器查看内容
#-p 指定容器端口 -p 8080:8080 主机端口:容器端口 -p ip:8080:8080 ip:主机端口:容器端口
#-P 随机指定端口
docker run -it centos /bin/bash #启动并进入容器
docker run -d centos #后台启动容器 docker ps发现centos停止 原因:docker容器使用后台运行,必须要有个前端进行,docker未发现前台进程就会自动停止
docker run -itd centos
exit #容器停止并退出
Ctrl+P+Q #容器不停止退出
docker rm 容器id #删除指定容器
docker rm $(dokcer ps -aq) #删除所有未运行容器
docker rm -f $(dokcer ps -aq) #删除所有容器
docker ps -aq|xargs docker rm #删除所有容器
docker start 容器id #启动停止的容器
docker restart 容器id #重启容器
docker stop 容器id #停止容器
docker kill 容器id #强制停止容器
docker logs [可选参数] 容器id#查看日志
#可选参数说明:
#-f 循环输出
#-t 时间戳
#--tail n 输出最后n行
docker run -d --name test centos /bin/bash -c "while true;do echo testLogs; sleep 1; done;" #运行容器,循环打印
docker top 容器id/容器name #查看容器中的进程信息
docker inspect 容器id/容器name #查看容器id
docker exec -it 容器id /bin/bash #新开窗口进入容器
docker attach 容器id #进入容器正在运行的命令窗口
docker cp 容器id:/文件全路径 ./ #将容器内部的文件拷贝到当前文件夹下
部署nginx
1.搜索镜像
docker search nginx
2.拉取镜像
docker pull nginx
3.运行测试
docker run -d --name testnginx -p 12345:80 nginx
curl localhost:12345