Best Python code snippet using localstack_python
docker_cmd_client.py
Source:docker_cmd_client.py  
...386            return True387        except (subprocess.CalledProcessError, FileNotFoundError):388            return False389    def create_container(self, image_name: str, **kwargs) -> str:390        cmd, env_file = self._build_run_create_cmd("create", image_name, **kwargs)391        LOG.debug("Create container with cmd: %s", cmd)392        try:393            container_id = run(cmd)394            # Note: strip off Docker warning messages like "DNS setting (--dns=127.0.0.1) may fail in containers"395            container_id = container_id.strip().split("\n")[-1]396            return container_id.strip()397        except subprocess.CalledProcessError as e:398            if "Unable to find image" in to_str(e.stdout):399                raise NoSuchImage(image_name, stdout=e.stdout, stderr=e.stderr)400            raise ContainerException(401                "Docker process returned with errorcode %s" % e.returncode, e.stdout, e.stderr402            )403        finally:404            Util.rm_env_vars_file(env_file)405    def run_container(self, image_name: str, stdin=None, **kwargs) -> Tuple[bytes, bytes]:406        cmd, env_file = self._build_run_create_cmd("run", image_name, **kwargs)407        LOG.debug("Run container with cmd: %s", cmd)408        result = self._run_async_cmd(cmd, stdin, kwargs.get("name") or "", image_name)409        Util.rm_env_vars_file(env_file)410        return result411    def exec_in_container(412        self,413        container_name_or_id: str,414        command: Union[List[str], str],415        interactive=False,416        detach=False,417        env_vars: Optional[Dict[str, Optional[str]]] = None,418        stdin: Optional[bytes] = None,419        user: Optional[str] = None,420        workdir: Optional[str] = None,421    ) -> Tuple[bytes, bytes]:422        env_file = None423        cmd = self._docker_cmd()424        cmd.append("exec")425        if interactive:426            cmd.append("--interactive")427        if detach:428            cmd.append("--detach")429        if user:430            cmd += ["--user", user]431        if workdir:432            cmd += ["--workdir", workdir]433        if env_vars:434            env_flag, env_file = Util.create_env_vars_file_flag(env_vars)435            cmd += env_flag436        cmd.append(container_name_or_id)437        cmd += command if isinstance(command, List) else [command]438        LOG.debug("Execute in container cmd: %s", cmd)439        result = self._run_async_cmd(cmd, stdin, container_name_or_id)440        Util.rm_env_vars_file(env_file)441        return result442    def start_container(443        self,444        container_name_or_id: str,445        stdin=None,446        interactive: bool = False,447        attach: bool = False,448        flags: Optional[str] = None,449    ) -> Tuple[bytes, bytes]:450        cmd = self._docker_cmd() + ["start"]451        if flags:452            cmd.append(flags)453        if interactive:454            cmd.append("--interactive")455        if attach:456            cmd.append("--attach")457        cmd.append(container_name_or_id)458        LOG.debug("Start container with cmd: %s", cmd)459        return self._run_async_cmd(cmd, stdin, container_name_or_id)460    def _run_async_cmd(461        self, cmd: List[str], stdin: bytes, container_name: str, image_name=None462    ) -> Tuple[bytes, bytes]:463        kwargs = {464            "inherit_env": True,465            "asynchronous": True,466            "stderr": subprocess.PIPE,467            "outfile": self.default_run_outfile or subprocess.PIPE,468        }469        if stdin:470            kwargs["stdin"] = True471        try:472            process = run(cmd, **kwargs)473            stdout, stderr = process.communicate(input=stdin)474            if process.returncode != 0:475                raise subprocess.CalledProcessError(476                    process.returncode,477                    cmd,478                    stdout,479                    stderr,480                )481            else:482                return stdout, stderr483        except subprocess.CalledProcessError as e:484            stderr_str = to_str(e.stderr)485            if "Unable to find image" in stderr_str:486                raise NoSuchImage(image_name or "", stdout=e.stdout, stderr=e.stderr)487            if "No such container" in stderr_str:488                raise NoSuchContainer(container_name, stdout=e.stdout, stderr=e.stderr)489            raise ContainerException(490                "Docker process returned with errorcode %s" % e.returncode, e.stdout, e.stderr491            )492    def _build_run_create_cmd(493        self,494        action: str,495        image_name: str,496        *,497        name: Optional[str] = None,498        entrypoint: Optional[str] = None,499        remove: bool = False,500        interactive: bool = False,501        tty: bool = False,502        detach: bool = False,503        command: Optional[Union[List[str], str]] = None,504        mount_volumes: Optional[List[SimpleVolumeBind]] = None,505        ports: Optional[PortMappings] = None,506        env_vars: Optional[Dict[str, str]] = None,...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
