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"
|
||||
)
|
||||
|
||||
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() {
|
||||
Register("Centos", &RegisteredProvisioner{
|
||||
New: NewCentosProvisioner,
|
||||
|
@ -28,7 +21,6 @@ func NewCentosProvisioner(d drivers.Driver) Provisioner {
|
|||
p := &CentosProvisioner{
|
||||
RedHatProvisioner{
|
||||
GenericProvisioner: g,
|
||||
DockerRPMPath: dockerCentosRPMPath,
|
||||
},
|
||||
}
|
||||
return p
|
||||
|
|
|
@ -4,13 +4,6 @@ import (
|
|||
"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() {
|
||||
Register("Fedora", &RegisteredProvisioner{
|
||||
New: NewFedoraProvisioner,
|
||||
|
@ -28,7 +21,6 @@ func NewFedoraProvisioner(d drivers.Driver) Provisioner {
|
|||
p := &FedoraProvisioner{
|
||||
RedHatProvisioner{
|
||||
GenericProvisioner: g,
|
||||
DockerRPMPath: dockerFedoraRPMPath,
|
||||
},
|
||||
}
|
||||
return p
|
||||
|
|
|
@ -2,6 +2,7 @@ package provision
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"text/template"
|
||||
|
||||
|
@ -15,13 +16,31 @@ import (
|
|||
"github.com/docker/machine/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
// TODO: eventually the RPM install process will be integrated
|
||||
// into the get.docker.com install script; for now
|
||||
// we install via vendored RPMs
|
||||
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"
|
||||
var (
|
||||
ErrUnknownYumOsRelease = errors.New("unknown OS for Yum repository")
|
||||
|
||||
packageListTemplate = `[docker]
|
||||
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() {
|
||||
Register("RedHat", &RegisteredProvisioner{
|
||||
New: NewRedHatProvisioner,
|
||||
|
@ -39,13 +58,11 @@ func NewRedHatProvisioner(d drivers.Driver) Provisioner {
|
|||
},
|
||||
Driver: d,
|
||||
},
|
||||
DockerRPMPath: dockerRHELRPMPath,
|
||||
}
|
||||
}
|
||||
|
||||
type RedHatProvisioner struct {
|
||||
GenericProvisioner
|
||||
DockerRPMPath string
|
||||
}
|
||||
|
||||
func (provisioner *RedHatProvisioner) SSHCommand(args string) (string, error) {
|
||||
|
@ -155,7 +172,11 @@ func installDocker(provisioner *RedHatProvisioner) error {
|
|||
func (provisioner *RedHatProvisioner) installOfficialDocker() error {
|
||||
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
|
||||
}
|
||||
|
||||
|
@ -230,25 +251,12 @@ func (provisioner *RedHatProvisioner) GenerateDockerOptions(dockerPort int) (*Do
|
|||
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())
|
||||
provisioner.EngineOptions.Labels = append(provisioner.EngineOptions.Labels, driverNameLabel)
|
||||
|
||||
// systemd / redhat will not load options if they are on newlines
|
||||
// instead, it just continues with a different set of options; yeah...
|
||||
engineConfigTmpl := `[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}}
|
||||
`
|
||||
t, err := template.New("engineConfig").Parse(engineConfigTmpl)
|
||||
t, err := template.New("engineConfig").Parse(engineConfigTemplate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -268,3 +276,36 @@ Environment={{range .EngineOptions.Env}}{{ printf "%q" . }} {{end}}
|
|||
EngineOptionsPath: daemonOptsDir,
|
||||
}, 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