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>

使用下图所示功能打包推送即可
在这里插入图片描述