| 
					
				 | 
			
			
				@@ -15,22 +15,102 @@ repo](https://github.com/docker-library/official-images). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # CentOS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-CentOS (abbreviated from Community Enterprise Operating System) is a Linux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-distribution that attempts to provide a free, enterprise-class, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-community-supported computing platform which aims to be 100% binary compatible 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-with its upstream source, Red Hat Enterprise Linux (RHEL). In January 2014, it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-was announced that CentOS was officially joining forces with Red Hat while 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-staying independent from RHEL, under a new CentOS Governing Board. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+CentOS Linux is a community-supported distribution derived from sources 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+freely provided to the public by [Red Hat](ftp://ftp.redhat.com/pub/redhat/linux/enterprise/) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for Red Hat Enterprise Linux (RHEL). As such, CentOS Linux aims to be 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+functionally compatible with RHEL. The CentOS Project mainly changes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+packages to remove upstream vendor branding and artwork. CentOS Linux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+is no-cost and free to redistribute. Each CentOS Linux version is maintained 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for up to 10 years (by means of security updates -- the duration of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+support interval by Red Hat has varied over time with respect to Sources 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+released). A new CentOS Linux version is released approximately every 2 years 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+and each CentOS Linux version is periodically updated (roughly every 6 months) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+to support newer hardware. This results in a secure, low-maintenance, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+reliable, predictable, and reproducible Linux environment. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+> [wiki.centos.org](https://wiki.centos.org/FrontPage) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-> [wikipedia.org/wiki/CentOS](https://en.wikipedia.org/wiki/CentOS) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-This is the official CentOS image, and will be updated on a regular schedule or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-as needed for emergency fixes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# CentOS image documentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-The `centos:latest` tag will always point to the most recent version currently 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-available, and `centos:centos6` will point to the latest version of the CentOS 6 tree. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The `centos:latest` tag is always the most recent version currently 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+available. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The CentOS Project offers regularly updated images for all active releases. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+These images will be updated monthly or as needed for emergency fixes. These 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+rolling updates are tagged with the major version number only. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+For example: `docker pull centos:6` or `docker pull centos:7` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Additionally, images that correspond to install media are also offered. These 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+images DO NOT recieve updates as they are intended to match installation iso 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+contents. If you choose to use these images it is highly recommended that you 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+include `RUN yum -y update && yum clean all` in your Dockerfile, or otherwise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+address any potential security concerns. To use these images, please specify 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the minor version tag: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+For example: `docker pull centos:5.11` or `docker pull centos:6.6` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Systemd integration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Currently, systemd in CentOS 7 has been removed and replaced with a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+`fakesystemd` package for dependency resolution. This is due to systemd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+requiring the `CAP_SYS_ADMIN` capability, as well as being able to read 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the host's cgroups. If you wish to replace the fakesystemd package and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use systemd normally, please follow the steps below. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Dockerfile for systemd base image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    FROM centos:7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    MAINTAINER "you" <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ENV container docker 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    RUN yum -y update; yum clean all; \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    systemd-tmpfiles-setup.service ] || rm -f $i; done); \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rm -f /lib/systemd/system/multi-user.target.wants/*;\ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rm -f /etc/systemd/system/*.wants/*;\ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rm -f /lib/systemd/system/local-fs.target.wants/*; \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rm -f /lib/systemd/system/basic.target.wants/*;\ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rm -f /lib/systemd/system/anaconda.target.wants/*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    VOLUME [ "/sys/fs/cgroup" ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    CMD ["/usr/sbin/init"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This Dockerfile swaps out fakesystemd for the real package, but deletes a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+number of unit files which might cause issues. From here, you are ready 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+to build your base image. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docker build --rm -t local/c7-systemd . 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Example systemd enabled app container 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+In order to use the systemd enabled base container created above, you will 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+need to create your `Dockerfile` similar to the one below. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    FROM local/c7-systemd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    RUN yum -y install httpd; yum clean all; systemctl enable httpd.service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    EXPOSE 80 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    CMD ["/usr/sbin/init"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Build this image: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docker build --rm -t local/c7-systemd-httpd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Running a systemd enabled app container 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+In order to run a container with systemd, you will need to use the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+`--privileged` option mentioned earlier, as well as mounting the cgroups 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+volumes from the host. Below is an example command that will run the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+systemd enabled httpd container created earlier. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This container is running with systemd in a limited context, but it must 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+always be run as a privileged container with the cgroups filesystem mounted. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Supported Docker versions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |