Linux docker 环境搭建
Linux docker 环境搭建
Linux搭建Docker 环境
一、安装域配置
1.安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装Docker-CE
- 重建yum缓存
- 安装docker-ce,请执行一下安装命令
sudo yum install docker-ce
4.启动Docker-CE
sudo systemctl enable docker
sudo systemctl start docker
5.[可选]为Docker建立用户组
docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来
5.1 建立 Docker 用户组
sudo groupadd docker
5.2 添加当前用户到 docker 组
sudo usermod -aG docker $USER
6.镜像加速器配置
这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后在左侧的 Docker Hub 镜像站点 可以找到专属加速器地址,复制下来。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
之后重新加载配置,并且重启 Docker 服务
systemctl daemon-reload
systemctl restart docker
然后执行以下命令:
Docker 安装本地仓库
1.下载 docker registry私有镜像
docker pull docker.io/registry
2.修改配置文件
vim /etc/sysconfig/docker
OPTIONS=’–selinux-enabled --insecure-registry 192.168.137.17:5000’
注:标记IP为修改的部分
3.从容器中启动Registry
docker run -d -p 5000:5000 --name registry -v /home/dockeruser/data:/tmp/registry docker.io/registry
注:-d 表示该容器在后台运行
-p将主机的5000端口与容器的5000端口映射
–name 将容器的名称命名为registry
-v 表示将镜像的存储位置“/tmp/registry” 变更为宿主机的“/home/dockeruser/data”
注:这一步一定要在步骤2之后,否则修改配置文件不会生效
在上传到私有的registry之前,需要指定新的Registry目的地址,需要在镜像名前加上主机名和端口的前缀。
4.修改配置文件
vim /etc/docker/daemon.json
配置文件例子:
{
"registry-mirrors": ["https://.mirror.aliyuncs.com"], "insecure-registries":["xxx.xxx.xxx.xxx:5000"]
}
4.推送镜像
docker images node/helloworld
得到22d56cbd9e6
docker tag 22d56cbd9e6 192.168.137.17:5000/node/helloworld
注:192.168.137.17:5000 为所在主机的IP地址和端口
将打标签的镜像上传到私有库
docker push 192.168.137.17:5000/node/helloworld
Docker 开发外部访问端口
1、编辑docker文件:/usr/lib/systemd/system/docker.service
vim /usr/lib/systemd/system/docker.service
修改ExecStart行为下面内容
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer
[Service]
Type=notify
NotifyAccess=main
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
--init-path=/usr/libexec/docker/docker-init-current \
--seccomp-profile=/etc/docker/seccomp.json \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY \
$REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
KillMode=process
[Install]
WantedBy=multi-user.target
设置防火墙
firewall-cmd --zone=public --add-port=2375/tcp --permanent
Springboot + Docker项目发布
使用docker-maven-plugin插件打包镜像,并将镜像上传到远程docker仓库。
具体使用pom.xml配置如下:
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--镜像名称-->
<imageName>192.168.33.128:5000/${project.artifactId}</imageName>
<!--指定dockerfile路径-->
<!--<dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>-->
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!--远程仓库地址-->
<registryUrl>192.168.33.128:5000</registryUrl>
<pushImage>true</pushImage>
<!--基础镜像jdk1.8-->
<baseImage>java</baseImage>
<!--制作者提供本人信息-->
<maintainer>1330818611@qq.com</maintainer>
<!--切换到ROOT目录-->
<workdir>/ROOT</workdir>
<cmd>["java","-version"]</cmd>
<entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>
<!--指定远程docker地址-->
<dockerHost>http://192.168.33.128: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>
</plugin>
</plugins>
</build>
使用下图所示功能打包推送即可
