79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Creating a Web Server inside Docker
 | ||
| ---
 | ||
| 
 | ||
| # Creating a Web Server inside Docker
 | ||
| 
 | ||
| ### Start docker and it’s container -
 | ||
| 	```
 | ||
| 	$ systemctl restart docker
 | ||
| 	$ systemctl enable docker
 | ||
| 	$ docker run -it --name webserver centos:latest
 | ||
| 	```
 | ||
| 
 | ||
| ### Install httpd
 | ||
| - **yum** is already configured in centos docker image.
 | ||
| So directly install **httpd** software -
 | ||
| `$ yum install httpd -y`
 | ||
| 
 | ||
| - Create a dummy web page to check the server -
 | ||
| 	```
 | ||
| 	$ cd /var/www/html
 | ||
| 	$ vi index.html
 | ||
| 	```
 | ||
| 
 | ||
| ### Start services -
 | ||
|   - If we use **systemctl** to start the services, this will not work and gives an error.
 | ||
|   - **systemctl** doesn't work in docker.
 | ||
|   - In actual RedHat system, when we start a service it actually runs a script in background. That script start daemons.
 | ||
|   - To find the path of that script, check status of service
 | ||
| `$ systemctl status httpd`
 | ||
| `Loaded` option shows script file path.
 | ||
|   - In that file, we have a line which actually starts service -
 | ||
| `ExecStart = /usr/sbin/httpd....... `
 | ||
| So the command `/usr/sbin/httpd` actually starts **httpd** server.
 | ||
| 
 | ||
| - Service is running or not, can be checked by -
 | ||
| `$ ps -aux | grep httpd`
 | ||
| 
 | ||
| - So we don't require `systemctl` we can directly start our web server using-
 | ||
| `$ /usr/sbin/httpd`
 | ||
| This will start the web server.
 | ||
| 
 | ||
| - `ifconfig` doesn't work in docker.
 | ||
|   - So install software, which gives `ifconfig` command.
 | ||
|   - It can be checked in actual Redhat system by running this command-
 | ||
|   `$ rpm -qf /usr/sbin/ifconfig`
 | ||
|   - This comes from **net-tools** package.
 | ||
|   - So Install **net-tools** in docker os.
 | ||
| 
 | ||
| - Making _image_ of created web server -
 | ||
| `$ docker commit webserver apacheimg:v1`
 | ||
|   - Name of container is _webserver_.
 | ||
|   - This image can be share with exact setup with other users.
 | ||
| 
 | ||
| - To save created image -
 | ||
| `$ docker save apacheimg:v1 -o mywebserver.tar`
 | ||
| 
 | ||
| - To start **httpd** service automatically when container starts -
 | ||
|   - Write `/usr/sbin/httpd` in following file.
 | ||
| 	`$ vim /root/.bashrc`
 | ||
| 
 | ||
| - To copy a file in container from the base system -
 | ||
| `$ docker cp /root/form.txt  myconatiner:/`
 | ||
| 
 | ||
| ## Summary
 | ||
| Summary of all the commands -
 | ||
| ```
 | ||
| $ docker run -it --name webserver centos:latest
 | ||
| $ yum install httpd -y
 | ||
| $ rpm -q httpd
 | ||
| $ cd /var/www/html
 | ||
| $ vi index.html
 | ||
| // write some web content
 | ||
| 
 | ||
| $ /usr/sbin/httpd
 | ||
| $ yum install net-tool
 | ||
| 
 | ||
| $ ifconfig
 | ||
| ``` |