Docker的一些简单总结
1. Docker的简介
Docker 使用客户端-服务器 (C/S) 架构模式 使用远程API来管理和创建Docker容器。Docker 容器(Container)通过 Docker 镜像(Image)来创建,二者之间的关系类似于面向对象编程中的对象与类
Docker 是一个开源的应用容器引擎
Docker的组成,主要包括三给概念:
- 仓库(Repository)
- 镜像(Image)
- 它启动很快 。这也意味着,在它执行的过程中几乎没有额外的开销。
- 虚拟机占用物理空间大,容器占的内存很小
- 一键(单命令)部署。
- 容器(Container)
容器和虚拟机的比较:
- Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。
- Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
- Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。
- Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。
2. Docker的安装
注意: Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本
1. 安装Docker
1 | yum -y install docker |
2. 验证Docker是否安装成功
1 | 使用docker version命令查看,有client和service两部分表示docker安装启动都成功了 |
3. 启动Docker服务
1 | service docker start 启动Docker |
4. 查看Docker的运行状态
1 | ps -ef|grep docker |
5. 配置容器镜像加速器
每个用户的镜像加速器都不一样,通过阿里云的容器镜像服务的镜像加速器可以找到
1 | 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 |
3. Docker的一些常用命令
1. 查看镜像
1 | docker images 列出本地images |
2. 搜索镜像
1 | docker search mysql 搜索仓库MySQL镜像 |
3. 容器启动
1 | docker run centos echo 'name' 一次性容器:只运行一次 |
什么是守护式容器?
能够长期运行
没有交互式会话
适合运行应用程序和服务
4. 连接MySql
1 | 进入docker本地连接mysql客户端 |
5. Docker挂载
1 | docker cp runoob ID:/www/ 将主机runoob目录拷贝到容器ID的/www目录下 |
例:Tomcat的挂载
运行Tomcat
docker run -d –name ‘tom1’ -p 7899:8080 [IMG NAME]
宿主机在home目录下新建tomcat目录,复制容器里的conf和webapps到宿主机
docker cp 容器ID:/usr/local/tomcat/webapps /home/tomcat
docker cp 容器ID:/usr/local/tomcat/conf /home/tomcat
java1
2
3
4
5
6
7
8
9
10docker run -d --name 'tom2' -p 80:8080
-v /root/llj/tomcat/conf:/usr/local/tomcat/conf
-v /root/llj/tomcat/webapps:/usr/local/tomcat/webapps
-v /root/llj/tomcat/logs:/usr/local/tomcat/logs
tomcat
如果运行不起来则用这个:
docker run -d -p 80:8080
-v /root/llj/tomcat/webapps:/usr/local/tomcat/webapps
tomcat
4.DockerFile
1. DockerFile 简介:
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。
2. Docker 构建自己的image 镜像文件
1. 在本地工程中运行生成一个springboot的可运行的jar
将项目clean一下,在通过install打成jar包
在本地CMD测试一下是否可访问
doc下启动服务命令:
java1
java -jar \路径\firstSpringboot-0.0.1-SNAPSHOT.jar
2. 在/usr/local下创建一个dockerapp的目录
将本地生成的jar文件上传到docker服务器上的这个目录。/usr/local/dockerapp 。在当前的目录下新建一个DockerFile
的文件
文件内容如下:
意思是使用的是jdk8,将springbootdemo.jar文件添加到docker容器下,并且名字为firstspringbootdemo.jar,对外声明启动端口是8082,跟我们的application.yml配置文件一样。最后就是执行命令生成
1 |
|
3. 用docker build -t 构建镜像文件
文件名称 . 这个命令构建镜像文件image ,后面那个.
表示当前目录。
1 | docker build -t firstspringbootdemo . |
最后显示successfully,则构建成功
4. 查看镜像文件是否生成
1 | docker images |
5. 启动应用
1 | docker run -p 8082:8082 firstspringbootdemo |
5. Docker Compose与Harbor(搭建私服)
1. Docker Compose 简介
使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具
2. Docker Compose 安装
安装的是1.8版本的
1 | curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose |
查看是否安装成功
1 | docker-compose -v |
3.Harbor 的安装
下载tar包
java1
wget -P /usr/local https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.1.tgz
解压tar包
java1
tar zxf /usr/local/harbor-online-installer-v1.7.1.tgz -C /usr/local/
预编译harbor (这个过程可能会需要十来分钟,因为要到外部获取各种必须的镜像)
java1
2cd /usr/local/harbor
./prepare
执行安装
java1
2cd /usr/local/harbor
./install.sh直到看到[✔ —-Harbor has been installed and started successfully.—-]才说明harbor安装成功了
java1
2
3
4
5#停止harbor
docker-compose -f docker-compose.yml down
#启动harbor
docker-compose -f docker-compose.yml up -dHarbor改配置
- hostname写上你要访问的harbor的地址当主机名。
- harbor_admin_password是默认的harbor登录的密码
- database-password我猜是默认的harbor数据库密码,默认的是root123,建议改掉。
通过HTTP://ip地址:端口访问Harbor界面
4. 上传镜像
修改文件
/etc/docker/daemon.json
java1
2
3
4
5
6{
"registry-mirrors": ["https://3gecvtyg.mirror.aliyuncs.com"],
"insecure-registries": [
"192.168.0.29"
]
}
然后重启docker
java1
2
3
4systemctl restart docker
cd /usr/local/harbor
docker-compose up -d
将要上传的镜像打成tar
java1
docker tag nginx(镜像名字) 192.168.0.29/topcheer/nginx(放到那个目录)
有想法的小伙伴可以进入我的Github查看源码
** 在哪里跌倒,就在哪里趴下,休息一会儿你会发现新大陆的哦~ *