1. 在Linux上安装docker
公司内网虚拟机安装docker,操作系统是centOS,内核版本是3.10(3.10是最低要求)
如何查看内核版本:uname -r (uname -a 可以看到全部信息)
由于内网不能连接互联网,所以只能通过离线的方式安装docker
下载地址:https://download.docker.com/linux/static/stable/x86_64/
- 选择想要下载的安装包,后上传到服务器,可以通过rz -y 或者 sftp
- 在服务器上解压文件 tar -zxvf docker-18.06.1-ce.tgz
- 将解压后的文件移动到 /usr/bin目录下,执行命令 cp docker/* /usr/bin/
- 添加docker服务,添加文件 docker.service 在 /etc/systemd/system/文件夹下
执行命令 vim /etc/systemd/system/docker.service
内容如下:
请直接复制,一行都不要少
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
- 添加可执行权限,执行 chmod +x /etc/systemd/system/docker.service
- 启动docker
systemctl daemon-reload
systemctl start docker #启动dokcer
systemctl enable docker.service #设置开机启动 - 检查是否正常
systemctl status docker # 查看docker状态
docker -v # 查看docker版本
以上内容全部实践过,来源参考:https://www.jianshu.com/p/a46680b2b628
2. 导出导入dockr镜像
-
查看本机镜像
docker images
-
导出 save
docker save 镜像id(IMAGE_ID) > kyc_counterparty.tar (注意<前后要有空格)
导出后想办法把这个包弄到你本地 -
导入 load
想办法把包从本地弄到目标机器上
docker load < kyc_counterparty.tar (注意<前后要有空格)
以上内容参见:https://www.hangge.com/blog/cache/detail_2411.html
3. 重新打tag
因为用镜像id打的包,导入后,repository 和 tag 都会变成none,所以要重新打tag
然后使用 tag命令重命名这个镜像的名称和版本号
使用命令:docker tag [image id] [name]:[版本]
例:docker tag b677d69bda1e mysql:5.7
docker tag 85ed407df896 kyc-counterparty:0.1.release
4. 运行
docker run -d kyc-counterparty #这里貌似只能用镜像名
可能会出现以下情况,表示没有lastst这个版本,这个是就要带着版本号运行
[root@10-7 ~]# docker run -d kyc-counterparty
Unable to find image ‘kyc-counterparty:latest’ locally
[root@10-7 ~]# docker run -d kyc-counterparty:0.1.x_release-220113
a45587ae2e758b55823118904dcf90bd7bbcb6542a044cc45c7548fbafb954ff
使用主机模式启动镜像,这种模式下容器暴露什么端口,就从主机的什么端口出去
docker run -d --net=host dockertest.xx.cn/otcsp/kyc-counterparty:0.1.x_release-220124
端口映射模式:
docker run -p 8080:80 ---- 表示,将主机的8080端口,映射到容器的80端口
多个端口映射:
docker run -p 8080:80 -p 8081:81
docker run -d -p 9090:8090 -p 9091:8091 dockertest.xx.cn/otcsp/kyc-counterparty:0.1.x_release-220124
挂载日志到宿主机目录里:
docker run -d -v /opt/kyc-counterparty-log:/opt/logs --net=host -e ACTIVE_PROFILE=tst dockertest.xx.cn/otcsp/kyc-counterparty:0.1.x_release-220214
–name=myapp,启动参数用这个,可以将容器命名为myapp,之后在查看 日志,停止容器的时候,都可以用myapp 替代 容器id
容器名唯一,如果想重复用之前的容器,可以用docker rm 容器名 删除,后再启动
5.启动参数
实战用到的是 -e ACTIVE_PROFILE=uat 这样的参数,然后在dockerfile中指定启动命令时
通过 java -jar xxx.jar --spring.active.profile=${ ACTIVE_PROFILE} 这样的方式,就可以获使用不同的环境来启动
更多的参考:https://blog.csdn.net/weixin_34362790/article/details/91415122