#' Remove Docker Containers, Images, and Networks
#'
#' This function removes stopped containers, all networks
#' not used by at least one container, all dangling images,
#' and all build cache.
#'
#' @param volumes Logical. Should we prune volumes? Default is \code{FALSE}.
#'
#' @export prune_all_auto
#'
#' @return prune results
#'
#' @references \url{https://docs.docker.com/engine/admin/pruning/}
#'
#' @examples
#' \dontrun{
#' prune_all_auto()}
prune_all_auto = function(volumes = FALSE) {
cat('Cleaning up everything...\n')
if (volumes) system('docker system prune --volumes --force') else
system('docker system prune --force')
}
#' Remove Dangling Docker Containers
#'
#' This function prunes all dangling Docker containers automatically.
#'
#' @export prune_container_auto
#'
#' @return prune results
#'
#' @references \url{https://docs.docker.com/engine/admin/pruning/}
#'
#' @examples
#' \dontrun{
#' prune_container_auto()}
prune_container_auto = function() {
cat('Cleaning up dangling containers...\n')
system('docker container prune --force')
}
#' Remove Specific Docker Containers
#'
#' This function stops and removes the Docker containers used
#' for rendering the R Markdown document based on the output
#' YAML file from the (possibly unsuccessful) rendering process.
#'
#' @param input_yml The YAML file path (output of \code{\link{render_docker}})
#' when \code{prune_info = TRUE} which stores the information of the Docker
#' container to be stopped and removed. If not specified, will prune all
#' dangling containers.
#'
#' @importFrom yaml yaml.load_file
#'
#' @export prune_container
#'
#' @return prune results
#'
#' @examples
#' \dontrun{
#' prune_container()}
prune_container = function(input_yml) {
if (!file.exists(normalizePath(input_yml)))
stop('input file does not exist')
lst = yaml.load_file(normalizePath(input_yml))
container_name = lst$'container_name'
# TODO: needs exception handling
cat('Cleaning up dangling containers...\n')
system(paste0("docker stop \"", container_name, "\""))
system(paste0("docker rm -f \"", container_name, "\""))
}
#' @rdname prune_container
#' @export purge_container
purge_container = function() {
.Deprecated('prune_container')
}
#' Remove Dangling Docker Images
#'
#' This function prunes all dangling Docker images automatically.
#'
#' @export prune_image_auto
#'
#' @return prune results
#'
#' @references \url{https://docs.docker.com/engine/admin/pruning/}
#'
#' @examples
#' \dontrun{
#' prune_image_auto()}
prune_image_auto = function() {
cat('Cleaning up dangling images...\n')
system('docker image prune --force')
}
#' Remove Specific Docker Images
#'
#' This function removes the Docker images used
#' for rendering the R Markdown document based on the output
#' YAML file from the (possibly unsuccessful) rendering process.
#'
#' @param input_yml The YAML file path (output of \code{\link{render_docker}})
#' when \code{prune_info = TRUE} which stores the information of the
#' Docker image to be removed. If not specified, will prune all
#' dangling images.
#'
#' @importFrom yaml yaml.load_file
#'
#' @export prune_image
#'
#' @return prune results
#'
#' @examples
#' \dontrun{
#' prune_image()}
prune_image = function(input_yml) {
if (!file.exists(normalizePath(input_yml)))
stop('input file does not exist')
lst = yaml.load_file(normalizePath(input_yml))
image_name = lst$'image_name'
# TODO: needs exception handling
cat('Cleaning up dangling images...\n')
system(paste0("docker rmi -f \"", image_name, "\""))
}
#' @rdname prune_image
#' @export purge_image
purge_image = function() {
.Deprecated('prune_image')
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.