docker将应用程序与该程序的依赖打包在一个文件里。运行这个文件就会生成一个虚拟容器,就不用担心环境问题,还可以进行版本管理、复制修改等。
docker安装
由于在CentOS下安装docker最常用,所以以Linux环境安装为主
1.安装工具包
缺少依赖无法完成
$ sudo yum install -y yum-utils
2.设置远程仓库
$sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安装
$ sudo yum install docker-ce
4.启动
$ sudo systemctl start docker
或者
$ sudo service docker start
service docker start #启动docker
chkconfig docker on #加入开机启动
5.查看版本
$ sudo docker version
6.相关命令
镜像相关
docker imager: 列出本地的镜像
docker pull <image_name>: 从远程仓库拉取镜像到本地。
docker push <image_name>: 将本地镜像推送到远程仓库。
docker build -t <image_name> <dockerfile_path>: 基于 Dockerfile 构建镜像。
docker tag <image_id> <new_image_name>: 为镜像添加标签。
docker rmi <image_id>: 删除指定的镜像
容器相关
docker ps: 列出正在运行的容器。
docker ps -a: 列出所有容器,包括停止的容器。
docker run <image_name>: 创建并启动一个容器。
docker start <container_id>: 启动一个已停止的容器。
docker stop <container_id>: 停止一个正在运行的容器。
docker restart <container_id>: 重启一个容器。
docker rm <container_id>: 删除一个容器。
docker exec -it <container_id> <command>: 在正在运行的容器中执行命令。
docker logs <container_id>: 查看容器的日志
docker自定义网络
加入自定义网络中的容器才可以通过容器名相互访问
1.创建网络:网络名称为:lgcgknetwork
docker network create lgcgknetwork
2.查看网络名称
docker network ls
3.连接容器到网络
把名为mysql的容器加入到lgcgknetwork网络中:
docker network connect lgcgknetwork mysql
4.断开容器与网络的连接
把名为mysql的容器在lgcgknetwork网络中断开
docker network disconnect lgcgknetwork mysql
5.删除网络
删除指定网络lgcgknetwork
docker network rm lgcgknetwork
docker数据卷挂载
数据容器卷:是一种将容器内部目录和本地目录进行挂载的技术,它允许将容器内的数据持久化,并且可以在容器之间共享数据和重用数据
1.创建数据卷
docker volume create myvolume
2.运行容器时挂载数据卷
docker run -d --name mycontainer -v myvolume:/data myimage
解释:
myvolume
是数据卷的名称,/data
是容器内挂载点的路径,myimage
是要运行的 Docker 镜像
3.挂载主机目录到容器
docker run -d --name mycontainer -v /path/on/host:/path/in/container myimage
解释:
挂载一个数据卷。/path/on/host
是宿主机上的路径,/path/in/container
是容器内部的路径。容器启动后,宿主机的 /path/on/host
目录将被挂载到容器的 /path/in/container
目录,容器内对 /path/in/container
的操作会反映到宿主机的 /path/on/host
上。
4.查看数据卷信息
docker volume inspect myvolume
5.删除数据卷
docker volume rm myvolume
6.本地目录挂载
-v ./mysql8/data:/var/lib/mysql
在执行docker run命令时,使用-v 本地目录:容器内目录 可以完成本地目录挂载
本地目录必须以“/”或"./"开头,如果直接以名称开头,会被识别为数据卷而非本地目录
-v mysql:/var/lib/mysgl 会被识别为一个数据卷叫mysql
-v ./mysql:/var/lib/mysql会被识别为当前目录下的mysql目录
docker部署mysql
1.拉取mysql镜像
2.运行mysql容器
docker run -d --name mysql8 \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-v ./mysql8/data:/var/lib/mysql \
-v ./mysql8/conf:/etc/mysql/conf.d \
-v ./mysql8/init:/docker-entrypoint-initdb.d \
--network lgcgknetwork \
mysql:8.0
参数的解释:
-
docker run
:Docker 命令,用于创建并启动一个新的容器。 -
-d
:以分离模式运行容器,即在后台运行。 -
--name mysql8
:为容器指定一个名称,这里是mysql8
。 -
-p 3306:3306
:将容器的 3306 端口映射到宿主机的 3306 端口。这样,宿主机和其他机器可以通过宿主机的 3306 端口访问容器中的 MySQL 服务。 -
-e TZ=Asia/Shanghai
:设置容器的时区为上海时区。 -
-e MYSQL_ROOT_PASSWORD=123
456:设置 MySQL 的 root 用户的密码为123456
。这个环境变量用于在 MySQL 启动时设置 root 用户的密码。 -
-v ./mysql8/data:/var/lib/mysql
:将宿主机的./mysql8/data
目录挂载到容器的/var/lib/mysql
目录。这样,MySQL 的数据文件就存储在宿主机上,容器重启后数据不会丢失。 -
-v ./mysql8/conf:/etc/mysql/conf.d
:将宿主机的./mysql8/conf
目录挂载到容器的/etc/mysql/conf.d
目录。这样,可以自定义 MySQL 的配置文件。 -
-v ./mysql8/init:/docker-entrypoint-initdb.d
:将宿主机的./mysql8/init
目录挂载到容器的/docker-entrypoint-initdb.d
目录。这个目录用于存放初始化 MySQL 数据库时执行的 SQL 脚本。 -
--network lgcgknetwork
:指定容器连接的 Docker 网络,这里是lgcgknetwork
。 -
mysql:8.0
:指定要运行的 Docker 镜像名称,这里是 MySQL 镜像及版本。
docker部署nginx
创建并运行nginx容器
docker run -d --name \
-p 6001:6001 \
-v ./nginx/html:/usr/share/nginx/html \
-v ./nginx/nginx.conf:/etc/nginx/nginx.conf \
--network lgcgknetwork \
nginx
访问:ip:端口/index.html
docker部署java应用jar包
1.下载Java8镜像容器
docker run -d -it --name java-8 openjdk:8
2.编写Dockerfile文件
FROM openjdk:8
ENV PARAMS=""
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneADD target/xxl-job-admin-*.jar /xxl-job-admin.jar
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xxl-job-admin.jar $PARAMS"]
解释:
# 指定基础镜像为 openjdk:8,这是一个官方提供的带有 Java 8 的 Docker 镜像
FROM openjdk:8
# 设置环境变量 PARAMS,初始为空字符串,可以在构建时通过 --build-arg 参数传递值
ENV PARAMS=""
# 设置时区为 PRC(中国标准时间)
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 将本地的 target 目录下以 xxl-job-admin- 开头的 jar 文件复制到容器中的当前目录,并重命名为 /xxl-job-admin.jar
ADD target/xxl-job-admin-*.jar /xxl-job-admin.jar
# 设置容器启动时执行的命令,使用 java -jar 启动 /xxl-job-admin.jar,并传递环境变量 PARAMS 和 JAVA_OPTS(如果设置了 JAVA_OPTS)
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xxl-job-admin.jar $PARAMS"]
3.启动
把Dockerfile文件和jar包上传到root目录下:
构建镜像:
docker build -t xxlJobAdmin .
创建并运行容器
docker run -d --name xxlJobAdmin -p 6002:6002 --network lgcgknetwork xxlJobAdmin
浏览器访问: