目录
安装docker,docker-compose
dockerfile编排和常用命令
制作docker镜像
docker-compose.yml的案例 :
IDEA连接服务器编写、上传DockerFile, docker-compose文件。
dockecompose的常用命令
//安装docker
curl -sSL https://get.daocloud.io/docker | sh
//安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
// 给docker-compose添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
ps: 所有命令必须大写。
命令 | 格式 | 案例 | 作用 |
FROM | FROM |
FROM mysql:5.7.35 FROM java:8 |
表示需要依赖的镜像,必须放在第一行 |
EXPOSE | EXPOSE |
EXPOSE 8080 EXPOSE 8081 |
表示对外暴露的端口,可以使用多个EXPOSE 暴露多个端口 |
RUN | RUN | RUN ["","",""] | 表示在docker build 制作镜像时候运行的命令 |
ADD | ADD <源路径>..<目标目录> |
ADD /root/demo.jar /demo/test/demo.jar | 表示将源路径的文件复制到,镜像内目标目录下,如果源路径是下载URl,ADD命令会自动下载,完成后自动解压.tar.gz文件然后复制到镜像内目标目录。 |
VOLUME | VOLUME <容器内部目录> |
VOLUME /etc/conf | 表示指定容器内部的那些目录可以被外部挂载。 |
WORKDIR | WORKDIR <工作目录> |
WORKDIR /demo/test | 使用该命令指定工作目录,Dockerfile 中其后的命令 RUN、CMD、ENTRYPOINT、ADD、COPY 等命令都会在该目录下执行 |
CMD | CMD | CMD ["java", "-jar","demo.jar"] |
在使用 docker run 命令启动容器时候运行的镜像,一般和ENTRYPOINT组合使用 |
ENTRYPOINT | ENTRYPOINT | ENTRYPOINT ["java","-jar","demo.jar"] | 在使用 docker run 命令启动容器时候运行的镜像,一般和CMD组合使用 |
ENV | ENV | ENV | 设置系统环境 |
后端案例:
FROM java:8 #指定我们运行的服务需要依赖的镜像,一定要写在第一行。
ADD jwc.jar /jwc.jar #将指定目录下的文件,拷贝到指定的目录下,
EXPOSE 8080 #指定可以对外暴露的端口,可以使用该命令暴露多个
#在使用docker run启动容器时运行该命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/.urandom","-jar","/jwc.jar"]
前端案例:
FROM nginx:1.21.3-perl #拉取一个nginx服务
COPY dist/ /usr/share/nginx/html/ #将前端的dist文件拷贝到nginx的html目录下
这是nginx的默认配置文件,nginx默认会去/usr/share/nginx/html/目录下找前端页面,无其他需求不需要更改。
如果使用docker-compose编排的话,不需要我们提前将dockefile文件制作镜像。因为docker-compose会根据我们的配置自动找到dockerfile文件为我们制作成镜像后再运行。
//在dockerfile文件所在得文件,用命令制作镜像,后面的点的意思是Dockerfile所在的文件夹
docker build -t <自定义镜像名> .
//完成后使用docker images 命令查看你的镜像
//接下来就可以使用docker run 命令运行了
version: '3.0' #固定格式,表示docker-compose的版本号 services: #固定格式,所有服务的入口 #比如启动一个MySQL镜像 mysql: #自定义服务名,可随便起,但是必须唯一 image: mysql:5.7.35 #表示你需要运行的MySQL容器的版本 ports: #端口映射,外部端口映射容器内部端口,数组格式可映射多个端口 - 6379:6379 environment: #设置镜像变量 MYSQL_ROOT_PASSWORD: "root" #设置MySQL的密码为root #运行dockerfile文件制作的镜像 gdxl-admin: image: gdxl-admin build: context: /root/gdxl/admin #表示dockerfile文件存在的目录 dockerfile: dockerfile #表示dockerfile的文件名 ports: #端口映射 - 80:80 depends_on: #表示等mysql这个容器启动了,在启动当前容器 - mysql gdxl: image: gdxl build: context: ./ dockerfile: dockerfile ports: - 8888:8888 #也可以使用environment:设置application.yml中的配置
docker-compose的常用标签
命令 | 作用 | 案例 |
image | 依赖的镜像 | image: openjdk:8 |
ports | 端口映射(数组格式) | ports: - 80:80 - 8848:8848 |
environment | 设置环境变量(数组格式) | |
env_file | 通过文件配置环境变量 | env_file: 文件名 |
depends_on | 表示依赖该容器,等待该容器先启动 | depends_on: mysql |
volumes | 文件挂载(数组格式) | volumes: - /root/conf:/conf - /root/data:/data |
container_name |
给运行的容器起个名字 | container_name:MySQL8 |
假如说我们要把容器迁移到新的机器上,可以使用一下命令。
以正在运行的nacos2容器为例 :
先使用 docker commit 命令保存正在运行的容器为新的镜像:
docker commit 54b178d6e8da my-nacos:0.1
54b178d6e8da :这个是你要保存的容器的id
my-nacos:0.1: 自定义镜像的名称和版本号
使用docker save 命令将镜像保存成压缩包
将容器放入别的机器上,使用 docker load 命名可以将压缩包加载成镜像
最好使用编排工具写完再将文件长传到服务器,直接在服务器使用vim命令编写,因为没有格式提示,很多时候都会因为格式问题报错。
1.下载Docker插件。步骤FIle——》 Settings....——》Plugins。搜索docker点击installl下载安装。
2. 连接服务器,步骤:Tools——>Deloyment——> Configuration..... ,点击后跳出弹框。
2. 填写服务器地址,先点击右侧的三个点儿,才能弹出左侧弹框,根据一下步骤设置完信息后,点击ok.
3. 展示服务器的目录信息,步骤:Tools——》Deloyment——》Browse Remote Host
4. 点击IDEA右侧RemoteHost,跳出弹框,双击的服务器名称,连接成功后会展示你当前服务器的所有目录。
5.创建编写docker配置文件,将你的鼠标放,目录上右键选择创建一个文件或者目录。
6. 编写DockerFile文件。(注意把你的文件类型设置成DockerFile,不设置也不耽误运行,但是编写时候,IDEA没有命令提示)
7.编写docker-conpose.yml文件
//在docker-compose所在的文件夹内执行,或者执行时指定docker-compose所在的文件夹
docker compose up -d //运行docker-compose.yml编写的所有服务
docker compose down //停止并删除,所有up命令启动的容器
docker-compose ps // 查看正在运行中的容器
docker-compose ps -a //查看所有编排容器,包括已停止的容器
docker system df -v 查看容器的大小