安装
开机自动启动
systemctl enable docker.service
systemctl start docker
阿里云源配置
https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors
# 安装 Docker Compose
https://docs.docker.com/compose/install/
配置IDEA CA 参考
https://docs.docker.com/engine/security/protect-access/
https://blog.csdn.net/qq_40250122/article/details/98893559
配置Portainer
docker search portainer
docker pull portainer/portainer
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name prtainer portainer/portainer
镜像命令
docker images
docker rmi ID
docker pull redis []
容器命令
docker ps -a
docker -f rm
docker stop $(docker ps -a -q) 停止所有
docker run -d --name tomcat-8082 -p 8082:8080 --rm tomcat
docker stop ID
docker start tomcat 容器的启动
docker rm $(docker ps -a -q) 删除所有容器
docker容器拷贝Linux系统中
docker cp tomcat-8080:/usr/local/tomcat/webapps/ROOT/index.html /root
Linux系统拷贝到docker容器中
docker cp index.html tomcat-8080:/usr/local/tomcat/webapps/ROOT
日志查看
docker logs --tail=10 tomcat-8080
数据卷
docker logs -f -t --since="2021-10-19" --tail=10 tomcat-8080
docker run -d --name tomcat-8080 -p 8080:8080 -v /root/docker-volumn/exam:/usr/local/tomcat/webapps/exam
docker cp nginx-test:/etc/nginx/nginx.conf /usr/local/nginx/conf
启动nginx
docker run --name nginx-test -p 80:80 -d nginx
docker exec -it nginx-test bash
docker restart nginx-test
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
mysql -uroot -p
## Dockerfile 命令
FROM 依赖于什么镜像
ENV 环境配置
MAINTAINER 作者信息
WORKDIR 两个目录跳转 类似cd
RUN 创建文件夹 shell脚本
EXPOSE 为容器打开端口
COPY 宿主机复制到docker中
docker build -t deom1 .
删除虚悬镜像
docker image prune
开启docker远程访问
vi /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
systemctl daemon-reload
service docker restart
curl http://localhost:2375/version
防火墙
firewall-cmd --state 防火墙的状态
firewall-cmd --list-ports 防火墙的端口
systemctl start firewalld.service 启动防火墙
systemctl stop firewalld.service 关闭防火墙
systemctl restart firewalld.service 重启防火墙
systemctl is-enabled firewalld.service;echo $?
enabled --自启
0
或者:
[root@localhost ~]# systemctl is-enabled firewalld.service;echo $?
disabled --不自启
1
firewall-cmd --zone=public --list-ports 16. 查看指定区域所有打开的端口
在指定区域打开端口(记得重启防火墙)\(永久生效再加上 --permanent)
firewall-cmd --zone=public --add-port=80/tcp --permanent
–zone 作用域
–add-port=8080/tcp 添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
firewall-cmd --zone=public --add-port=8080/tcp --permanent
docker maven 配置一键部署
<properties>
<java.version>1.8</java.version>
<!-- 镜像 前缀姓名-->
<docker.image.prefix>demo</docker.image.prefix>
</properties>
<dependencies>
<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>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!-- 镜像名称 guoweixin/exam-->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 基础镜像jdk 1.8-->
<baseImage>java</baseImage>
<!-- 制作者提供本人信息 -->
<maintainer>guoweixin guoweixin@aliyun.com</maintainer>
<!--切换到/ROOT目录 -->
<workdir>/ROOT</workdir>
<cmd>["java", "-version"]</cmd>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
<!-- 指定 Dockerfile 路径
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
-->
<!--指定远程 docker api地址
此处未加CA加密认证。
-->
<dockerHost>http://192.168.20.135:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<!--当执行mvn package 时,执行: mvn clean package docker:build -->
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
当我们执行mvn package时,执行 build、tag 操作,
当执行mvn deploy时,执行build、tag、push 操作。
如果我们想跳过 docker 某个过程时,只需要:
-DskipDockerBuild 跳过 build 镜像
-DskipDockerTag 跳过 tag 镜像
-DskipDockerPush 跳过 push 镜像
-DskipDocker 跳过整个阶段
例如:我们想执行 package 时,跳过 tag 过程,那么就需要mvn package -DskipDockerTag
相关配置说明:
- executions.execution.phase:此处配置了在maven打包应用时构建docker镜像;
- imageName:用于指定镜像名称,mall-tiny是仓库名称,{project.version}为仓库名称;
- dockerHost:打包后上传到的docker服务器地址;
- baseImage:该应用所依赖的基础镜像,此处为java;
- entryPoint:docker容器启动时执行的命令;
- resources.resource.targetPath:将打包后的资源文件复制到该目录;
- resources.resource.directory:需要复制的文件所在目录,maven打包的应用jar包保存在target目录下面;
- resources.resource.include:需要复制的文件,打包好的应用jar包。