Chapter 1
- Correct answers are: 4, 5.
- A Docker container is, to IT, what a shipping container is to the transportation industry. It defines a standard on how to package goods. In this case, goods are the application(s) developers write. The suppliers (in this case, the developers) are responsible for packaging the goods into the container and making sure everything fits as expected. Once the goods are packaged into a container, it can be shipped. Since it is a standard container, the shippers can standardize their means of transportation such as lorries, trains, or ships. The shipper doesn't really care what's in a container. Also, the loading and unloading process from one transportation means to another (for example, train to ship) can be highly standardized. This massively increases the efficiency of transportation. Analogous to this is an operations engineer in IT who can take a software container built by a developer and ship it to a production system and run it there in a highly standardized way, without worrying about what's in the container. It will just work.
- Some of the reasons why containers are game changers are:
- Containers are self-contained and thus if they run on one system, they run anywhere where a container can run.
- Containers run on-premise and in the cloud, as well as in hybrid environments. This is important for today's typical enterprises since it allows a mostly smooth transition from on-premise to cloud.
- Container images are built or packaged by the people who know best – the developers.
- Container images are immutable which is important for a good release management.
- Containers are enablers of a secure software supply chain-based on encapsulation (using Linux namespaces and cgroups), secrets, content trust, and image vulnerability scanning.
- A container runs anywhere where a container can run because:
- Containers are self-contained black boxes. They encapsulate not only an application but all its dependencies, such as libraries and frameworks, configuration data, certificates, and so on.
- Containers are based on widely accepted standards such as OCI.
- TODO: add more reasons.
- False! Containers are useful for modern applications as well as to containerize traditional applications. The benefit for an enterprise when doing the latter is huge. Cost savings in the maintenance of legacy apps of 50% or more have been reported. The time between new releases of such legacy applications could be reduced by up to 90%. These numbers have been publicly reported by real enterprise customers.
- 50% or more.
- Containers are based on Linux namespaces (network, process, user, and so on) and cgroups (control groups).