Some readme tweaks. (#80)
This commit is contained in:
		
							parent
							
								
									cebb4031b3
								
							
						
					
					
						commit
						59f09eb07b
					
				
							
								
								
									
										72
									
								
								README.md
								
								
								
								
							
							
						
						
									
										72
									
								
								README.md
								
								
								
								
							|  | @ -1,15 +1,10 @@ | |||
| # kaniko | ||||
| # kaniko - Build Images In Kubernetes | ||||
| 
 | ||||
| kaniko is a tool to build container images from a Dockerfile, inside a container or Kubernetes cluster. | ||||
| 
 | ||||
| kaniko is a tool to build unpriviliged container images from a Dockerfile. | ||||
| kaniko doesn't depend on a Docker daemon and executes each command within a Dockerfile completely in userspace. | ||||
| This enables building container images in environments that can't easily or securely run a Docker daemon, such as a standard Kubernetes cluster.  | ||||
| 
 | ||||
| The majority of Dockerfile commands can be executed with kaniko, but we're still working on supporting the following commands: | ||||
| * SHELL | ||||
| * HEALTHCHECK | ||||
| * STOPSIGNAL | ||||
| * ARG | ||||
| 
 | ||||
| We're currently in the process of building kaniko, so as of now it isn't production ready. | ||||
| Please let us know if you have any feature requests or find any bugs! | ||||
| 
 | ||||
|  | @ -20,6 +15,17 @@ Within the executor image, we extract the filesystem of the base image (the FROM | |||
| We then execute the commands in the Dockerfile, snapshotting the filesystem in userspace after each one. | ||||
| After each command, we append a layer of changed files to the base image (if there are any) and update image metadata. | ||||
| 
 | ||||
| ## Known Issues | ||||
| 
 | ||||
| The majority of Dockerfile commands can be executed with kaniko, but we're still working on supporting the following commands: | ||||
| 
 | ||||
| * SHELL | ||||
| * HEALTHCHECK | ||||
| * STOPSIGNAL | ||||
| * ARG | ||||
| 
 | ||||
| Multi-State Dockerfiles are also unsupported currently, but will be ready soon. | ||||
| 
 | ||||
| ## kaniko Build Contexts | ||||
| kaniko supports local directories and GCS buckets as build contexts. To specify a local directory, pass in the `--context` flag as an argument to the executor image. | ||||
| To specify a GCS bucket, pass in the `--bucket` flag. | ||||
|  | @ -41,24 +47,6 @@ We can copy over the compressed tar to a GCS bucket with gsutil: | |||
| gsutil cp context.tar.gz gs://<bucket name> | ||||
| ``` | ||||
| 
 | ||||
| ## Running kaniko locally | ||||
| 
 | ||||
| Requirements: | ||||
| * Docker | ||||
| * gcloud | ||||
| 
 | ||||
| We can run the kaniko executor image locally in a Docker daemon to build and push an image from a Dockerfile. | ||||
| 
 | ||||
| First, we want to load the executor image into the Docker daemon by running | ||||
| ```shell | ||||
| make images | ||||
| ``` | ||||
| 
 | ||||
| To run kaniko in Docker, run the following command: | ||||
| ```shell | ||||
| ./run_in_docker.sh <path to Dockerfile> <path to build context> <destination of final image> | ||||
| ``` | ||||
| 
 | ||||
| ## Running kaniko in a Kubernetes cluster | ||||
| 
 | ||||
| Requirements: | ||||
|  | @ -117,6 +105,24 @@ steps: | |||
| ``` | ||||
| kaniko will build and push the final image in this build step. | ||||
| 
 | ||||
| ## Running kaniko locally | ||||
| 
 | ||||
| Requirements: | ||||
| * Docker | ||||
| * gcloud | ||||
| 
 | ||||
| We can run the kaniko executor image locally in a Docker daemon to build and push an image from a Dockerfile. | ||||
| 
 | ||||
| First, we want to load the executor image into the Docker daemon by running | ||||
| ```shell | ||||
| make images | ||||
| ``` | ||||
| 
 | ||||
| To run kaniko in Docker, run the following command: | ||||
| ```shell | ||||
| ./run_in_docker.sh <path to Dockerfile> <path to build context> <destination of final image> | ||||
| ``` | ||||
| 
 | ||||
| ## Comparison with Other Tools | ||||
| 
 | ||||
| Similar tools include: | ||||
|  | @ -124,17 +130,19 @@ Similar tools include: | |||
| * [orca-build](https://github.com/cyphar/orca-build) | ||||
| * [buildah](https://github.com/projectatomic/buildah) | ||||
| * [FTL](https://github.com/GoogleCloudPlatform/runtimes-common/tree/master/ftl) | ||||
| * [Bazel rules_docker](https://github.com/bazelbuild/rules_docker) | ||||
| 
 | ||||
| All of these tools build container images with different approaches. | ||||
| Both kaniko and img build unprivileged images, but they interpret “unprivileged” differently. | ||||
| img builds as a non root user from within the container, while kaniko is run in an unprivileged environment with root access inside the container.  | ||||
| 
 | ||||
| orca-build depends on runC to build images from Dockerfiles; since kaniko doesn't use runC it doesn't require the use of kernel namespacing techniques. | ||||
| `img` can perform as a non root user from within a container, but requires that the `img` container has `RawProc` access to create nested containers. | ||||
| `kaniko` does not actually create nested containers, so it does not require `RawProc` access. | ||||
| 
 | ||||
| buildah requires the same root privilges as a Docker daemon does to run, while kaniko runs without any special privileges or permissions.   | ||||
| `orca-build` depends on `runC` to build images from Dockerfiles, which can not run inside a container. `kaniko` doesn't use runC so it doesn't require the use of kernel namespacing techniques. | ||||
| 
 | ||||
| FTL aims to achieve the fastest possible creation of Docker images for a subset of images. | ||||
| It can be thought of as a special-case "fast path" that can be used in conjunction with the support for general Dockerfiles kaniko provides. | ||||
| `buildah` requires the same privileges as a Docker daemon does to run, while `kaniko` runs without any special privileges or permissions.   | ||||
| 
 | ||||
| `FTL` and `Bazel` aim to achieve the fastest possible creation of Docker images for a subset of images. | ||||
| These can be thought of as a special-case "fast path" that can be used in conjunction with the support for general Dockerfiles kaniko provides. | ||||
| 
 | ||||
| ## Community | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue