1、什么是Docker
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-1.png)
1.1、容器技术
1.2、容器与虚拟机比较虚拟机:
虚拟机:
1.3、Docker特点
1、更高效的利用系统资源
2、更快速的启动时间
3、一致的运行环境
4、持续支付和部署
5、更轻松的迁移
6、更轻松的维护和扩展
2、Docker组件学习
2.1、Docker客户端和服务器
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-4.png)
2.2、Docker镜像
2.3、Registry(注册中心/镜像仓库)
2.4、Docker容器
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-5.png)
3、Docker的安装
3.1、准备工作
1、准备Linux服务器
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-6.png)
2、清除系统残余项
sudo yum remove docker
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-7.png)
3、安装下载Docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-8.png)
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-9.png)
4、添加阿里云的软件源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
5、更新yum缓存
sudo yum makecache fast
3.2、安装Docker
1、安装Docker
sudo yum -y install docker-ce
2、启动Docker
sudo systemctl start docker
docker info
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-14.png)
3、开机启动Docker
sudo systemctl start docker
docker info
sudo systemctl enable docker
4、移除Docker-ce服务
sudo yum remove docker-ce
5、删除Docker依赖项
sudo rm -rf /var/lib/docker
4、Docker常用命令
docker search 镜像名称 //搜索镜像
docker pull 镜像名称:版本号 //拉取对应版本的镜像
docker pull 镜像名称 //默认拉取最新的镜像
docker images //查看本地已下载的镜像
docker ps //查看正在运行的容器
docker ps -a //查看所有的容器(包括run、stop、exited状态的)
docker container ls //查看正在运行的容器
docker rm 容器ID //只能删除没有在运行的容器
docker rm -f 容器ID //可以删除正在运行的容器
docker run -p 本地主机端口号:容器服务端口号 --name 容器名字 [-e 配置信息修改] -d 镜像名字
docker start 容器ID //启动容器
docker stop 容器ID //终止容器
docker rmi 镜像名称orID //删除镜像
docker rmi 镜像名称orI --force //强制删除镜像
4.1、停止与启动容器
4.2、文件拷贝
docker cp 需要拷贝的文件或目录容器名称:容器目录
docker cp 容器名称:容器目录需要拷贝的文件或目录
docker cp /1.txt redis:/ #把linux中的/1.txt文件,拷贝到redis容器中的 / 根目录 docker
cp redis:/2.txt / #把redis容器中的 /2.txt ,拷贝到 linux的 / 根目录
4.3、目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7
4.4、查看容器IP地址
docker inspect mycentos2
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2
4.5、删除容器
docker rm docker ps -a -q
4.6、登录容器
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-17.png)
1、使用attach进入容器
docker attach 53
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-18.png)
除了使用容器ID进入容器之外,也可以使用容器的别名进入容器:
docker attach java
2、使用exec命令进入容器
docker exec -it java /bin/bash
docker exec -it 53 /bin/bash
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-19.png)
5、Docker安装常用软件
5.1、安装 MySQL
docker search mysql
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-20.png)
我们这里安装MySQL8.0 的,命令如下:
docker pull mysql:8.0
docker pull mysql //默认拉取最新版本
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-21.png)
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-22.png)
docker images mysql:8.0
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-23.png)
docker run -p 3307:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
参数说明:
-p 将本地主机的端口映射到docker容器端口(因为本机的3306端口已被其它版本占用,所以使用3307)
--name 容器名称命名
-e 配置信息,配置root密码
-d 镜像名称
docker ps
docker exec -it mysql8.0 bash
mysql -uroot -p
然后输入密码root就可以登录成功了
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-27.png)
select version();
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-28.png)
5.2、安装JDK
docker pull primetoninc/jdk:1.8
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-30.png)
docker run -d -it --name java primetoninc/jdk:1.8
参数说明:
run:启动一个镜像容器
-d:指定容器运行于后台
-it:-i 和 -t 的缩写;
-i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name:第一个“java”是为容器指定了一个别名,而第二个“java”指的是下载镜像时的名称
文章来源:https://www.toymoban.com/news/detail-712811.html
java -versrion
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-32.png)
6、Docker中部署jar包运行
6.1、准备一个jar包
pom依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.test</groupId>
<artifactId>DockerDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<!--1、引入SpringBoot-->
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<dependencies>
<!--web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.5.RELEASE</version>
<configuration>
<!--自己手动导入的jar包也需要打包-->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version><configuration>
<!--测试包下的代码出错不影响项目的编译-->
<testFailureIgnore>true</testFailureIgnore>
<!--跳过测试包代码-->
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
<finalName>dockerDemo</finalName>
</build>
</project>
@SpringBootApplication
@EnableScheduling
public class App {
public static void main(String[] args){
SpringApplication.run(App.class, args);
}
}
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class TestTask {
@Scheduled(fixedRate = 2000)
public void test(){
System.out.println("定时任务:每隔两秒执行一次" + new Date());
}
}
6.2、创建DockerFile文件
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-33.png)
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-34.png)
# jdk 是一个已有的包含 jdk 的镜像
FROM java
# 作者签名
MAINTAINER libigtong
# 简化 jar 的名字路径
COPY dockerDemo.jar /app.jar
# 执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就执行此行)
CMD java -jar /app.jar
# 设置对外端口为 8080
EXPOSE 8080
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-35.png)
6.3、生成镜像
docker build -t docker_test:docker_demo -f /opt/dockerTest/Dockerfile
/opt/dockerTest
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-36.png)
6.4、启动镜像
docker run --name dockerApp -p 8080:8080 -d 28dae64bba9d
6.5、启动容器
docker start cc7c3a1582d0
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-37.png)
6.6、运行效果查看
docker attach cc7c3a1582d0
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-38.png)
docker stop cc7c3a1582d0
文章来源地址https://www.toymoban.com/news/detail-712811.html
![docker部署项目,docker及linux,docker,容器,运维,持续部署](https://imgs.yssmx.com/Uploads/2023/10/712811-40.png)
到了这里,关于docker从安装到部署项目,一篇文章教会你的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!