Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update yaml pipe operator #31

Merged
merged 1 commit into from
Sep 22, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions course-definition.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: "Build your own Docker"
short_name: "Docker"
release_status: "live"

description_md: |
description_md: |-
In this challenge, you'll build a toy Docker implementation that can pull an
image from [Docker Hub](https://hub.docker.com/) and execute commands in it.
Along the way, you'll learn about
Expand All @@ -12,7 +12,7 @@ description_md: |
registry API](https://docs.docker.com/registry/spec/api/) and much more.

# Keep this under 70 characters
short_description_md: |
short_description_md: |-
Learn about kernel namespaces, chroot, the registry API and more

completion_percentage: 30
Expand Down Expand Up @@ -47,22 +47,22 @@ marketing:
author_description: "SRE, Coinbase"
author_avatar: "https://codecrafters.io/images/external/testimonials/raghav-dua.jpeg"
link: "https://github.com/duaraghav8"
text: |
text: |-
I spent a full day on your Docker building course and ended up building the whole thing myself. As a SRE (and
mostly a user of docker), digging into the internals blew me away.

- author_name: "Beyang Liu"
author_description: "CTO at SourceGraph"
author_avatar: "https://codecrafters.io/images/external/testimonials/beyang-liu.jpeg"
link: "https://twitter.com/beyang"
text: |
text: |-
CodeCrafters has you build your own version of things like Git and Docker from scratch. A cool way to build a stronger mental model of how those tools work.

stages:
- slug: "init"
name: "Execute a program"
difficulty: very_easy
description_md: |
description_md: |-
Your task is to implement a very basic version
of [`docker run`](https://docs.docker.com/engine/reference/run/)</a>. It will
be executed similar to `docker run`:
Expand All @@ -77,14 +77,14 @@ stages:
For now, don't worry about pulling the `ubuntu:latest` image. We will just
execute a local program for this stage and print its output. You'll work on
pulling images from Docker Hub in stage 6.
marketing_md: |
marketing_md: |-
In this stage, you'll execute a program using `fork` + `exec`.
tester_source_code_url: "https://github.com/codecrafters-io/docker-tester/blob/18245703a5beed8ee0a7e1cbb7204a7ee3b3b5d1/internal/stage_basic_exec.go#L9"

- slug: "stdio"
name: "Wireup stdout & stderr"
difficulty: easy
description_md: |
description_md: |-
You'll now pipe the program's stdout and stderr to the
parent process.

Expand All @@ -104,15 +104,15 @@ stages:

Note: The **README** in your repository contains setup
information for this stage and beyond (takes < 5 min).
marketing_md: |
marketing_md: |-
In this stage, you'll relay the child program's stdout & stderr to the
parent process.
tester_source_code_url: "https://github.com/codecrafters-io/docker-tester/blob/18245703a5beed8ee0a7e1cbb7204a7ee3b3b5d1/internal/stage_stdio.go#L9"

- slug: "exit_code"
name: "Handle exit codes"
difficulty: easy
description_md: |
description_md: |-
In this stage, you'll need to relay the program's exit code to the parent
process.

Expand All @@ -127,15 +127,15 @@ stages:
```
mydocker run ubuntu:latest /usr/local/bin/docker-explorer exit 1
```
marketing_md: |
marketing_md: |-
In this stage, you'll wait for the child program's exit code and exit with
it.
tester_source_code_url: "https://github.com/codecrafters-io/docker-tester/blob/18245703a5beed8ee0a7e1cbb7204a7ee3b3b5d1/internal/stage_exit_code.go#L9"

- slug: "fs_isolation"
name: "Filesystem isolation"
difficulty: medium
description_md: |
description_md: |-
In the previous stage, we executed a program that existed locally on our
machine. This program had write access to the whole filesystem, which
means that it could do **dangerous** things!
Expand Down Expand Up @@ -182,15 +182,15 @@ stages:
```
mydocker run ubuntu:latest /usr/local/bin/docker-explorer ls /some_dir
```
marketing_md: |
marketing_md: |-
In this stage, you'll restrict a program's access to the host filesystem
by using [chroot](https://en.wikipedia.org/wiki/Chroot).
tester_source_code_url: "https://github.com/codecrafters-io/docker-tester/blob/18245703a5beed8ee0a7e1cbb7204a7ee3b3b5d1/internal/stage_fs_isolation.go#L8"

- slug: "process_isolation"
name: "Process isolation"
difficulty: medium
description_md: |
description_md: |-
In the previous stage, we guarded against malicious activity by
restricting an executable's access to the filesystem.

Expand All @@ -214,7 +214,7 @@ stages:
```
mydocker run ubuntu:latest /usr/local/bin/docker-explorer mypid
```
marketing_md: |
marketing_md: |-
In this stage, you'll restrict a program's access to the host's process
tree by using [PID
namespaces](http://man7.org/linux/man-pages/man7/pid_namespaces.7.html).
Expand All @@ -223,7 +223,7 @@ stages:
- slug: "fetch_from_registry"
name: "Fetch an image from the Docker Registry"
difficulty: hard
description_md: |
description_md: |-
Your docker implementation can now execute a program with a fair degree of
isolation - it can't modify files or interact with processes running on
the host.
Expand Down Expand Up @@ -279,7 +279,7 @@ stages:

You can assume that `libcurl` is available in the build environment.
{{/lang_is_c}}
marketing_md: |
marketing_md: |-
In this stage, you'll fetch an image from Docker Hub and execute a command
in it. You'll need to use [the Docker Registry
API](https://docs.docker.com/registry/spec/api/) for this.
Expand Down