#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on
#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker.service
#创建文件夹
mkdir -p /docker/portainer/{data,public}
#中文汉化
#注意安装前不要导入汉化包,否则无法注册。
https://www.quchao.net/Portainer-CN.html
# 运行
docker run -d -p 9000:9000 --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--privileged=true \
portainer/portainer-ce
# 初始化登录地址
http://192.168.80.250:9000
admin
111111111111 (12位)
首先,我们需要创建一个自定义的网络,这样我们才可以使用Docker为容器分配固定IP。可以使用下面的命令来创建自定义网络:
如果只使用docker network create pub_network
创建网络,则容器启动时,会自动分配动态的IP地址和网关。
docker network create --subnet=192.168.0.0/16 pub_network
这个命令将创建名为“mynet”的网络,并指定它的子网为“192.168.0.0/16”。
接下来,我们需要为需要分配固定IP的容器指定IP地址。可以使用下面的命令来启动一个容器,并为它分配固定IP:
docker run --name=ubuntu --net=pub_network --ip=192.168.0.101 -itd ubuntu:latest
这个命令将启动一个名为“ubuntu”的容器,并将它加入到自定义网络“mynet”中。同时,它还为这个容器分配了固定IP地址“192.168.0.101”。
现在,我们可以验证容器的IP地址是否生效。可以使用下面的命令来查看容器的IP地址:
docker inspect ubuntu | grep IPAddress
这个命令将输出包含容器IP地址的行,从而验证我们刚才为容器分配的固定IP地址是否生效了。
最后,需要注意的是,我们可以为同一个网络中的多个容器分配不同的IP地址,但IP地址必须在同一个子网中。
#将容器1添加到my_network网络中
docker network connect my_network container1
#从网络中删除容器1
docker network disconnect my_network container1
#使用Bridge模式进行网络配置
docker run -it --name my_container --net bridge
docker network create --subnet=192.168.10.0/255 pub_network
docker pull nginx
#挂载启动
docker run -it -d \
--name=nginx \
--network=pub_network \
-p 80:80 \
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/html:/usr/share/nginx/html \
-v /docker/nginx/logs:/var/log/nginx \
--privileged nginx
docker pull redis
#配置下面内容
# 文件路径:/docker/redis/redis.conf
port 6379
bind *
daemonize no
pidfile /docker/redis/redis.pid
appendonly yes
# 启动
docker run \
--network=pub_network \
--name redis \
-v /docker/redis/data:/data \
-v /docker/redis/redis.conf:/etc/redis/redis.conf \
-d redis \
redis-server /etc/redis/redis.conf \
--appendonly yes
docker pull mysql:5.7
#配置
#文件 /docker/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
# 启动容器
docker run --name mysql \
-p 3306:3306 \
--network=pub_network \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
#进入容器内部
docker exec -it mysql bash
mysql -uroot -proot
#给root开远程权限
grant all privileges on *.* to root@"%" identified by "root";
flush privileges;
文件名称固定是Dockerfile,不能随意改变,文件内容如下:
FROM openjdk:8
# 第一行必须是FROM。。。,不能把这行注释移动到第一行。
# 如果镜像没有,则会自动下载
# 作者
MAINTAINER 硅谷工具人
# VOLUME 指向了一个/tmp的目录,由于 SpringBoot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。
# 这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp
# 将应用的配置文件也拷贝到镜像中。使用下面的ADD也可以
# COPY *.jar /app.jar
# 将本地JAR包打包到容器中,并重命名(erp.jar是重命名后的jar)
ADD ruoyi-admin.jar erp.jar
# 声明需要暴露的端口,在Dockerfile中声明了那些端口是需要开放的,
# 在构建容器时通过-p可以随机映射端口,如果EXPOSE没有指定端口,那么使用-p参数无效。
# 本配置只是声明,一般我们需要在构建docker容器时使用-p(小写的p)指定开放的端口。
EXPOSE 8080
#docker启动时,运行的命令,这里容器启动时直接运行jar服务。
ENTRYPOINT ["java","-jar","/erp.jar"]
注意点:
1、文件名必须是Dockerfile,大小写不能修改
2、maven项目先打包,然后将打包好的jar包和Dockerfile文件上传到服务器,并且放到相同的目录。
3、如果有外置配置文件application.yml,也需要放到上面相同的目录。
docker build -t erp:1.0 .
#查看构建的镜像
docker images
docker run --network=pub_network --name erp -d erp:1.0