diff --git a/conmon/conmon.c b/conmon/conmon.c index 05789882..66d1bbe0 100644 --- a/conmon/conmon.c +++ b/conmon/conmon.c @@ -96,6 +96,8 @@ static inline void strv_cleanup(char ***strv) #define CMD_SIZE 1024 #define MAX_EVENTS 10 +#define DEFAULT_SOCKET_PATH "/var/lib/crio" + static bool opt_terminal = false; static bool opt_stdin = false; static char *opt_cid = NULL; @@ -111,6 +113,7 @@ static char *opt_log_path = NULL; static char *opt_exit_dir = NULL; static int opt_timeout = 0; static int64_t opt_log_size_max = -1; +static char *opt_socket_path = DEFAULT_SOCKET_PATH; static GOptionEntry opt_entries[] = { { "terminal", 't', 0, G_OPTION_ARG_NONE, &opt_terminal, "Terminal", NULL }, @@ -128,6 +131,7 @@ static GOptionEntry opt_entries[] = { "log-path", 'l', 0, G_OPTION_ARG_STRING, &opt_log_path, "Log file path", NULL }, { "timeout", 'T', 0, G_OPTION_ARG_INT, &opt_timeout, "Timeout in seconds", NULL }, { "log-size-max", 0, 0, G_OPTION_ARG_INT64, &opt_log_size_max, "Maximum size of log file", NULL }, + { "socket-dir-path", 0, 0, G_OPTION_ARG_STRING, &opt_socket_path, "Location of container attach sockets", NULL }, { NULL } }; @@ -989,14 +993,14 @@ static char *setup_attach_socket(void) * Create a symlink so we don't exceed unix domain socket * path length limit. */ - attach_symlink_dir_path = g_build_filename("/var/run/crio", opt_cuuid, NULL); + attach_symlink_dir_path = g_build_filename(opt_socket_path, opt_cuuid, NULL); if (unlink(attach_symlink_dir_path) == -1 && errno != ENOENT) pexit("Failed to remove existing symlink for attach socket directory"); if (symlink(opt_bundle_path, attach_symlink_dir_path) == -1) pexit("Failed to create symlink for attach socket"); - attach_sock_path = g_build_filename("/var/run/crio", opt_cuuid, "attach", NULL); + attach_sock_path = g_build_filename(opt_socket_path, opt_cuuid, "attach", NULL); ninfo("attach sock path: %s", attach_sock_path); strncpy(attach_addr.sun_path, attach_sock_path, sizeof(attach_addr.sun_path) - 1); diff --git a/oci/oci.go b/oci/oci.go index fba80c6a..756be44b 100644 --- a/oci/oci.go +++ b/oci/oci.go @@ -40,6 +40,8 @@ const ( SystemdCgroupsManager = "systemd" // ContainerExitsDir is the location of container exit dirs ContainerExitsDir = "/var/run/crio/exits" + // ContainerAttachSocketDir is the location for container attach sockets + ContainerAttachSocketDir = "/var/run/crio" // killContainerTimeout is the timeout that we wait for the container to // be SIGKILLed. @@ -177,6 +179,7 @@ func (r *Runtime) CreateContainer(c *Container, cgroupParent string) (err error) args = append(args, "-p", filepath.Join(c.bundlePath, "pidfile")) args = append(args, "-l", c.logPath) args = append(args, "--exit-dir", r.containerExitsDir) + args = append(args, "--socket-dir-path", ContainerAttachSocketDir) if r.logSizeMax >= 0 { args = append(args, "--log-size-max", fmt.Sprintf("%v", r.logSizeMax)) } @@ -434,6 +437,7 @@ func (r *Runtime) ExecSync(c *Container, command []string, timeout int64) (resp args = append(args, fmt.Sprintf("%d", timeout)) } args = append(args, "-l", logPath) + args = append(args, "--socket-dir-path", ContainerAttachSocketDir) pspec := c.Spec().Process pspec.Env = append(pspec.Env, r.conmonEnv...) diff --git a/server/container_attach.go b/server/container_attach.go index 2d2fe203..6a822858 100644 --- a/server/container_attach.go +++ b/server/container_attach.go @@ -67,7 +67,7 @@ func (ss streamService) Attach(containerID string, inputStream io.Reader, output } }) - attachSocketPath := filepath.Join("/var/run/crio", c.ID(), "attach") + attachSocketPath := filepath.Join(oci.ContainerAttachSocketDir, c.ID(), "attach") conn, err := net.DialUnix("unixpacket", nil, &net.UnixAddr{Name: attachSocketPath, Net: "unixpacket"}) if err != nil { return fmt.Errorf("failed to connect to container %s attach socket: %v", c.ID(), err)