mirror of https://github.com/docker/docs.git
use yum repos for redhat like distros
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
This commit is contained in:
parent
ad6d8d49a8
commit
01bf2ea2d7
|
@ -4,13 +4,6 @@ import (
|
||||||
"github.com/docker/machine/drivers"
|
"github.com/docker/machine/drivers"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
// TODO: eventually the RPM install process will be integrated
|
|
||||||
// into the get.docker.com install script; for now
|
|
||||||
// we install via vendored RPMs
|
|
||||||
dockerCentosRPMPath = "https://get.docker.com/rpm/1.7.0/centos-7/RPMS/x86_64/docker-engine-1.7.0-1.el7.centos.x86_64.rpm"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Register("Centos", &RegisteredProvisioner{
|
Register("Centos", &RegisteredProvisioner{
|
||||||
New: NewCentosProvisioner,
|
New: NewCentosProvisioner,
|
||||||
|
@ -28,7 +21,6 @@ func NewCentosProvisioner(d drivers.Driver) Provisioner {
|
||||||
p := &CentosProvisioner{
|
p := &CentosProvisioner{
|
||||||
RedHatProvisioner{
|
RedHatProvisioner{
|
||||||
GenericProvisioner: g,
|
GenericProvisioner: g,
|
||||||
DockerRPMPath: dockerCentosRPMPath,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return p
|
return p
|
||||||
|
|
|
@ -4,13 +4,6 @@ import (
|
||||||
"github.com/docker/machine/drivers"
|
"github.com/docker/machine/drivers"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
// TODO: eventually the RPM install process will be integrated
|
|
||||||
// into the get.docker.com install script; for now
|
|
||||||
// we install via vendored RPMs
|
|
||||||
dockerFedoraRPMPath = "https://get.docker.com/rpm/1.7.0/fedora-21/RPMS/x86_64/docker-engine-1.7.0-1.fc21.x86_64.rpm"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Register("Fedora", &RegisteredProvisioner{
|
Register("Fedora", &RegisteredProvisioner{
|
||||||
New: NewFedoraProvisioner,
|
New: NewFedoraProvisioner,
|
||||||
|
@ -28,7 +21,6 @@ func NewFedoraProvisioner(d drivers.Driver) Provisioner {
|
||||||
p := &FedoraProvisioner{
|
p := &FedoraProvisioner{
|
||||||
RedHatProvisioner{
|
RedHatProvisioner{
|
||||||
GenericProvisioner: g,
|
GenericProvisioner: g,
|
||||||
DockerRPMPath: dockerFedoraRPMPath,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return p
|
return p
|
||||||
|
|
|
@ -2,6 +2,7 @@ package provision
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
|
@ -15,13 +16,31 @@ import (
|
||||||
"github.com/docker/machine/utils"
|
"github.com/docker/machine/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
var (
|
||||||
// TODO: eventually the RPM install process will be integrated
|
ErrUnknownYumOsRelease = errors.New("unknown OS for Yum repository")
|
||||||
// into the get.docker.com install script; for now
|
|
||||||
// we install via vendored RPMs
|
packageListTemplate = `[docker]
|
||||||
dockerRHELRPMPath = "https://get.docker.com/rpm/1.7.0/centos-7/RPMS/x86_64/docker-engine-1.7.0-1.el7.centos.x86_64.rpm"
|
name=Docker Stable Repository
|
||||||
|
baseurl=https://yum.dockerproject.org/repo/main/{{.OsRelease}}/{{.OsReleaseVersion}}
|
||||||
|
priority=1
|
||||||
|
enabled=1
|
||||||
|
gpgkey=https://yum.dockerproject.org/gpg
|
||||||
|
`
|
||||||
|
engineConfigTemplate = `[Service]
|
||||||
|
ExecStart=/usr/bin/docker -d -H tcp://0.0.0.0:{{.DockerPort}} -H unix:///var/run/docker.sock --storage-driver {{.EngineOptions.StorageDriver}} --tlsverify --tlscacert {{.AuthOptions.CaCertRemotePath}} --tlscert {{.AuthOptions.ServerCertRemotePath}} --tlskey {{.AuthOptions.ServerKeyRemotePath}} {{ range .EngineOptions.Labels }}--label {{.}} {{ end }}{{ range .EngineOptions.InsecureRegistry }}--insecure-registry {{.}} {{ end }}{{ range .EngineOptions.RegistryMirror }}--registry-mirror {{.}} {{ end }}{{ range .EngineOptions.ArbitraryFlags }}--{{.}} {{ end }}
|
||||||
|
MountFlags=slave
|
||||||
|
LimitNOFILE=1048576
|
||||||
|
LimitNPROC=1048576
|
||||||
|
LimitCORE=infinity
|
||||||
|
Environment={{range .EngineOptions.Env}}{{ printf "%q" . }} {{end}}
|
||||||
|
`
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type PackageListInfo struct {
|
||||||
|
OsRelease string
|
||||||
|
OsReleaseVersion string
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Register("RedHat", &RegisteredProvisioner{
|
Register("RedHat", &RegisteredProvisioner{
|
||||||
New: NewRedHatProvisioner,
|
New: NewRedHatProvisioner,
|
||||||
|
@ -39,13 +58,11 @@ func NewRedHatProvisioner(d drivers.Driver) Provisioner {
|
||||||
},
|
},
|
||||||
Driver: d,
|
Driver: d,
|
||||||
},
|
},
|
||||||
DockerRPMPath: dockerRHELRPMPath,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type RedHatProvisioner struct {
|
type RedHatProvisioner struct {
|
||||||
GenericProvisioner
|
GenericProvisioner
|
||||||
DockerRPMPath string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (provisioner *RedHatProvisioner) SSHCommand(args string) (string, error) {
|
func (provisioner *RedHatProvisioner) SSHCommand(args string) (string, error) {
|
||||||
|
@ -155,7 +172,11 @@ func installDocker(provisioner *RedHatProvisioner) error {
|
||||||
func (provisioner *RedHatProvisioner) installOfficialDocker() error {
|
func (provisioner *RedHatProvisioner) installOfficialDocker() error {
|
||||||
log.Debug("installing docker")
|
log.Debug("installing docker")
|
||||||
|
|
||||||
if _, err := provisioner.SSHCommand(fmt.Sprintf("sudo yum install -y --nogpgcheck %s", provisioner.DockerRPMPath)); err != nil {
|
if err := provisioner.ConfigurePackageList(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := provisioner.SSHCommand("sudo yum install -y docker-engine"); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,25 +251,12 @@ func (provisioner *RedHatProvisioner) GenerateDockerOptions(dockerPort int) (*Do
|
||||||
configPath = provisioner.DaemonOptionsFile
|
configPath = provisioner.DaemonOptionsFile
|
||||||
)
|
)
|
||||||
|
|
||||||
// remove existing
|
|
||||||
//if _, err := provisioner.SSHCommand(fmt.Sprintf("sudo rm %s", configPath)); err != nil {
|
|
||||||
// return nil, err
|
|
||||||
//}
|
|
||||||
|
|
||||||
driverNameLabel := fmt.Sprintf("provider=%s", provisioner.Driver.DriverName())
|
driverNameLabel := fmt.Sprintf("provider=%s", provisioner.Driver.DriverName())
|
||||||
provisioner.EngineOptions.Labels = append(provisioner.EngineOptions.Labels, driverNameLabel)
|
provisioner.EngineOptions.Labels = append(provisioner.EngineOptions.Labels, driverNameLabel)
|
||||||
|
|
||||||
// systemd / redhat will not load options if they are on newlines
|
// systemd / redhat will not load options if they are on newlines
|
||||||
// instead, it just continues with a different set of options; yeah...
|
// instead, it just continues with a different set of options; yeah...
|
||||||
engineConfigTmpl := `[Service]
|
t, err := template.New("engineConfig").Parse(engineConfigTemplate)
|
||||||
ExecStart=/usr/bin/docker -d -H tcp://0.0.0.0:{{.DockerPort}} -H unix:///var/run/docker.sock --storage-driver {{.EngineOptions.StorageDriver}} --tlsverify --tlscacert {{.AuthOptions.CaCertRemotePath}} --tlscert {{.AuthOptions.ServerCertRemotePath}} --tlskey {{.AuthOptions.ServerKeyRemotePath}} {{ range .EngineOptions.Labels }}--label {{.}} {{ end }}{{ range .EngineOptions.InsecureRegistry }}--insecure-registry {{.}} {{ end }}{{ range .EngineOptions.RegistryMirror }}--registry-mirror {{.}} {{ end }}{{ range .EngineOptions.ArbitraryFlags }}--{{.}} {{ end }}
|
|
||||||
MountFlags=slave
|
|
||||||
LimitNOFILE=1048576
|
|
||||||
LimitNPROC=1048576
|
|
||||||
LimitCORE=infinity
|
|
||||||
Environment={{range .EngineOptions.Env}}{{ printf "%q" . }} {{end}}
|
|
||||||
`
|
|
||||||
t, err := template.New("engineConfig").Parse(engineConfigTmpl)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -268,3 +276,36 @@ Environment={{range .EngineOptions.Env}}{{ printf "%q" . }} {{end}}
|
||||||
EngineOptionsPath: daemonOptsDir,
|
EngineOptionsPath: daemonOptsDir,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (provisioner *RedHatProvisioner) ConfigurePackageList() error {
|
||||||
|
packageListInfo := &PackageListInfo{}
|
||||||
|
switch provisioner.OsReleaseId {
|
||||||
|
case "rhel", "centos":
|
||||||
|
// rhel and centos both use the "centos" repo
|
||||||
|
packageListInfo.OsRelease = "centos"
|
||||||
|
packageListInfo.OsReleaseVersion = "7"
|
||||||
|
case "fedora":
|
||||||
|
packageListInfo.OsRelease = "fedora"
|
||||||
|
packageListInfo.OsReleaseVersion = "22"
|
||||||
|
default:
|
||||||
|
return ErrUnknownYumOsRelease
|
||||||
|
}
|
||||||
|
|
||||||
|
t, err := template.New("packageList").Parse(packageListTemplate)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
|
||||||
|
if err := t.Execute(&buf, packageListInfo); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
packageCmd := fmt.Sprintf("echo \"%s\" | sudo tee /etc/yum.repos.d/docker.repo", buf.String())
|
||||||
|
if _, err := provisioner.SSHCommand(packageCmd); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue