MOTOSHARE πποΈ
Turning Idle Vehicles into Shared Rides & Earnings
From Idle to Income. From Parked to Purpose.
Earn by Sharing, Ride by Renting.
Where Owners Earn, Riders Move.
Owners Earn. Riders Move. Motoshare Connects.
With Motoshare, every parked vehicle finds a purpose.
Owners earn. Renters ride.
π Everyone wins.
Day 1
What is Docker?
Container mgmt. tool
release
community -
enterprise -
Go
1.26
What is COntainer?
Mgmt
create -> start -> stop -> restart -> kill -> remove
tools
save cost
save time
Docker Component
==============================================
1. Docker Engine
2. Docker Image == App
3. Registry - hub.docker.com
4. Run the image --> Container
===================================================
Docker Architecture
=============================================================
HUMAN ---> Docker Client ------------REST API-----------> Docker Daemon(Server) ----> ContainerD --> Kernel
=========================================================================
docker engine
12 ls
13 which docker
14 which dockerd
15 ps -eaf | grep dockerd
16 which containerd
17 ps -eaf | grep containerd
18 clear
19 docker info
20 clear
21 docker version
22 clear
23 docker images
24 docker ps
25 docker ps -a
26 dicker images
27 docker images
28 docker pull httpd
29 clear
30 docker images
31 clear
32 ls
33 docker ps
34 docker create httpd
35 docker ps
36 docker ps -a
37 docker create --name raj1 httpd
38 docker ps -a
39 docker create httpd
40 docker ps -a
41 docker start 112bdde76185
42 docker ps -a
43 docker start a59132c11efe
44 docker ps -a
45 docker stop raj1
46 docker ps -a
47 docker restart a59132c11efe
48 docker ps -a
49 docker kill 112bdde76185
50 docker ps -a
51 docker rm 112bdde76185
52 docker ps -a
Reference
- https://www.devopsschool.com/blog/how-to-install-docker-in-linux/
- https://www.devopsschool.com/blog/lifecycle-of-docker-containers/
Code language: JavaScript (javascript)
=========================================================================================
How to use container?
=============================
Go insider a container using exec
exec - it would exectute inside a container
$ docker exec -it contid /bin/bash
71 docker ps
72 docker exec 814aa598e526 ls
73 docker exec 814aa598e526 du
74 docker exec -it 814aa598e526 /bin/bash
Access a container using Network
79 docker inspect 814aa598e526
80 docker ps
81 docker inspect c6f27d85206a
82 curl http://172.17.0.5
83 docker ps
84 curl http://172.17.0.6
======================================================================
PHYSICAL VM SERVER Container
=============================================================================
Is running Is running is running
as long as as long as as long as
PID 1 is running PID 1 is running PID 1 is running
KERNEL KERNEL ANYTHNG - java, py, bash, any cmd tool
========================================================================
run
=============================================
pull + create + start + ATTACHED TO a PID1 of a container
run -d
pull + create + start + DO NOT ATTACHED TO a PID1 of a container
98 docker run httpd
99 docker run -d httpd
100 docker ps -a
101 clear
102 ls
103 docker ps -a
104 docker container stop $(docker container ls -aq)
105 docker container prune
106 clear
107 docker ps -a
108 docker run ubuntu
109 docker ps -a
110 docker run -d ubuntu
111 docker ps -a
112 docker run -it ubuntu
113 docker ps -a
==========================How to access container from outside================
117 docker ps
118 docker run -d httpd
119 docker ps
120 docker inspect 2d34bcc061ff
121 curl http://172.17.0.2
122 clear
123 docker run -d -p 80:80 httpd
124 docker ps
125 docker run -d -p 80:80 httpd
126 docker run -d -p 81:80 httpd
127 docker run -d -p 82:80 httpd
http://43.204.150.25:82/
http://43.204.150.25:81/
http://43.204.150.25:80/
=================================================================
Each container
PID
NET
MNT -- RFS
USER
$ docker run -it ubuntu
1 ps -eaf
2 ip a
3 ifconfig
4 apt update
9 sudo apt install iproute2
10 apt install iproute2
11 clear
12 ip a
13 df -kh
14 ls /
15 ls
16 w
17 id
18 history
Code language: JavaScript (javascript)
135 docker run -h
136 docker run --help
137 clear
138 history
139 docker container stop $(docker container ls -aq)
140 docker container prune
141 clear
142 ls
143 docker ps
144 docker attach c4c6afa22b44
145 clear
146 docker ps
147 ls
148 clear
149 touch rajesh.txt
150 ls
151 docker ps
152 docker cp rajesh.txt 8cc8f3eb236c:/tmp
153 docker exec 8cc8f3eb236c ls /tmp
154 clear
155 docker ps
156 docker diff 8cc8f3eb236c
157 clear
158 docker ps
159 docker pause 8cc8f3eb236c
160 docker ps
161 docker unpause 8cc8f3eb236c
162 docker ps
163 docker stats
164 clear
165 docker port
166 docker ps
167 docker port 609f621bb16f
168 docker rename 609f621bb16f rajesh2
169 docker port 609f621bb16f
170 docker ps
171 clear
172 docker ps
173 docker run --help
174 cleare
175 clear
176 docker update --help
177 clear
178 docker ps
179 docker wait a9445c462189
180 clear
181 docker ps
182 docker logs 8cc8f3eb236c
183 docker inspect 8cc8f3eb236c
184 clear
185 docker logs 8cc8f3eb236c
186 curl http://172.17.0.32
187 docker logs 8cc8f3eb236c
188 curl http://172.17.0.32
189 docker logs 8cc8f3eb236c
190 docker stats
191 docker stats 8cc8f3eb236c
192 docker run -itd httpd
193 history
194 docker container stop $(docker container ls -aq)
195 docker container prune
196 history
Code language: PHP (php)
Reference – https://www.devopsschool.com/blog/the-docker-command-line-complete-referenece/
Day 2
What is Docker?
What is Container?
How container works?
Docker install
Container workflow
=========================
create -> start -> stop -> res -> pau -> upa -> kill -> remo
================================================================
What is Docker image?
===================================
TYPES FILESYSTEM
==============================
BOOT + ROOT + USER + APP
VM Image == BOOT + ROOT + USER + APP
kernel + Linux/win + rajesh + java + jenkins
Docker image
ROOT + USER + APP
ubuntu + raj --- ubuntu
ubuntu + raj + java == java
ubuntu + raj + java + tomcat + Jenkins == jenkins
centos
fedora
deb
sus
win19
win22
===================================================================
694 docker container stop $(docker container ls -aq)
695 docker container prune
696 history
697 clear
698 ls
699 clear
700 ls
701 docker ps -a
702 docker stop $(docker ps -aq)
703 docker rm -f $(docker ps -aq)
704 clear
705 docker ps
706 docker ps -a
707 docker images
708 docker rmi $(docker images -a -q)
709 clear
710 ls
711 docker ps -a
712 docker images
713 docker rmi $(docker images -a -q)
714 docker ps -a
715 docker rmi a542858eb092
716 docker rmi mongo:8.0.13-noble
717 docker rmi mongo:noble
718 docker rmi $(docker images -a -q)
719 clear
720 docker images
721 docker info
722 cd /var/lib/docker
723 clear
724 ls
725 docker info
726 ls
727 clear
728 ls
729 cd overlay2
730 ls
731 pwd
732 docker pull ubuntu
733 ls
734 cd 1da39e8b7b5fcac1f87895c6163b427e635095a06828b12be19ec91264c9048c
735 ls
736 cd diff/
737 ls
738 clear
739 ls
740 cd ..
741 ls
742 cd ..
743 ls
744 docker rmi ubuntu
745 ls
746 docker pull httpd
747 ls
748 clear
749 ls
750 docker inspect httpd
751 clear
752 ls
753 clear
754 ls
755 docker images
756 docker run -d httpd
757 ls
758 du -sh e6ebd5090290ef6dc49761033c60ccb18f7b4b5291d3490b82c138c50cfe9ddf-init
759 du -sh e6ebd5090290ef6dc49761033c60ccb18f7b4b5291d3490b82c138c50cfe9ddf
760 cd e6ebd5090290ef6dc49761033c60ccb18f7b4b5291d3490b82c138c50cfe9ddf
761 ls
762 cd merged/
763 ls
764 df -kh
765 clear
766 ls
767 cd ..
768 ls
769 docker ps
770 docker stop 1c032ccbccb3
771 ls e6ebd5090290ef6dc49761033c60ccb18f7b4b5291d3490b82c138c50cfe9ddf
772 docker start 1c032ccbccb3
773 ls e6ebd5090290ef6dc49761033c60ccb18f7b4b5291d3490b82c138c50cfe9ddf
774 docker stop 1c032ccbccb3
775 ls e6ebd5090290ef6dc49761033c60ccb18f7b4b5291d3490b82c138c50cfe9ddf
776 df -kh
777 docker start 1c032ccbccb3
778 df -kh
779 clear
780 ls
781 docker ps
782 docker exec 1c032ccbccb3 touch /tmp/rajesh.txt
783 docker exec 1c032ccbccb3 ls /tmp
784 find . -name rajesh.txt
785 docker stop 1c032ccbccb3
786 find . -name rajesh.txt
787 docker stoart 1c032ccbccb3
788 docker start 1c032ccbccb3
789 find . -name rajesh.txt
===============================================================================================
How to create a Docker images?
=====================================================
Lazy way --- Manual way -- easy way USING Existing Container
CI way --- Auto way -- easy way USING dockerfile
==================================================================
Name == repo name == motoshare
Base - ubuntu
git
apache
index.html
=========================================
5 mins
790 history
791 clear
792 docker images
793 cd
794 docker run -itd ubuntu
795 docker ps
796 docker exec -it cedc2db4f10a /bin/bash
-----------inside a container--------------------
apt-get update
apt-get install git -y
apt-get install apache2 -y
------------------------------------------------
797 vi index.html
798 docker ps
799 docker cp index.html cedc2db4f10a:/var/www/html
800 docker ps
801 docker exec cedc2db4f10a git
802 docker exec cedc2db4f10a which apache2
803 clear
804 docker ps
805 docker commit -m"ub-ap-git" -a"Rajesh Kumar" cedc2db4f10a ub-ap-git
806 docker images
807 docker history ubuntu
808 docker history ub-ap-git
809 docker images
810 docker run -itd ub-ap-git
811 docker ps
812 docker exec e6659e128430 git
813 docker exec e6659e128430 which apache2
814 docker exec e6659e128430 ls /var/www/html
815 history
Code language: JavaScript (javascript)
===================================================
dockerfile
==================================
a file
contains
INSTRUCTIONS
???
FROM ubuntu
MAINTAINER rajeshkumar devops@rajeshkumar.xyz
ARG user=rajesh
RUN apt-get update
RUN apt-get install git -y
RUN apt-get install apache2 -y
RUN useradd $user
USER $user
ENV JENKINS_HOME /var/jenkins_home
docker build -t rajesh1 .
Reference
- https://www.devopsschool.com/blog/example-and-sample-programs-of-dockerfile/
NEXT.........................
ENTRYPOINT
CMD
Code language: PHP (php)
NEXT.........................
ENTRYPOINT
CMD
===============================================
ENTRYPOINT
or
CMD
or
BOTH
==================================
Container is running as long as PID 1 is running.
PID 1 can be any thing
How to set PID 1?
ENTRYPOINT
or
CMD
ENTRYPOINT ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"]
CMD ["/bin/bash"]
===================================
ENTRYPOINT can not be replaced
CMD can be replaced
2 ENTRYPOINT --> LAST ONE WOULD TAKE
2 CMD ----> LAST ONE WOULD TAKE
1 ENTRYPOINT 1 CMD ---->
PID 1 -- ENTRYPOINT + CMD
["/bin/tini", "--", "/usr/local/bin/jenkins.sh", ls]
=============================
PID from BASE IMAGE
=================================================
Docker Volume
==============================================================
Container are EMP*
How to make Data of container PERSIS*
============================================
ANSWER - volume
=====================================
Types of volume or location
---- /var/lib/docker/volumes
--- Any path in host
--- memory
895 docker volume prune
896 clear
897 ls
898 pwd
899 ls
900 pwd
901 clear
902 ls
903 docker volume
904 docker volume ls
905 docker volume create dev
906 docker volume ls
907 ls
908 docker run -itd -v dev:/tmp/raju ubuntu
909 docker exec 31e5bc1ecd268fb7f2279dd390a930602962889c346e163fdd36480890bbef96 ls /tmp
910 docker exec 31e5bc1ecd268fb7f2279dd390a930602962889c346e163fdd36480890bbef96 touch /tmp/rajesh.txt
911 docker exec 31e5bc1ecd268fb7f2279dd390a930602962889c346e163fdd36480890bbef96 ls /tmp
912 docker exec 31e5bc1ecd268fb7f2279dd390a930602962889c346e163fdd36480890bbef96 touch /tmp/raju/rajesh.txt
913 docker exec 31e5bc1ecd268fb7f2279dd390a930602962889c346e163fdd36480890bbef96 ls /tmp/raju
914 ls
915 ls dev/_data/rajesh.txt
916 touch dev/_data/raju.txt
917 docker exec 31e5bc1ecd268fb7f2279dd390a930602962889c346e163fdd36480890bbef96 ls /tmp/raju
918 clear
919 docker ps
920 docker stop 31e5bc1ecd26
921 docker rm 31e5bc1ecd26
922 touch dev/_data/raju.txt
923 touch dev/_data/
924 ls dev/_data/
925 docker run -itd -v dev:/tmp/raju ubuntu
926 docker run -itd -v /opt/rajesh:/tmp/raju ubuntu
927 ls /opt/
Reference
- https://www.devopsschool.com/blog/understand-docker-volume-from-beginner-to-deep-dive-level/
- https://www.devopsschool.com/blog/docker-volume/
Code language: PHP (php)
949 docker network ls
950 ip a
951 docker ps
952 docker inspect 752c8e0a9559
953 cleare
954 clear
955 docker network create dev
956 docker network create qa
957 docker network ls
958 docker network inspect dev
959 docker network inspect qa
960 clear
961 ls
962 docker run -itd --net=dev ubuntu
963 docker ps
964 docker inspect 5c96d60aa9f3
965 ip a
966 clear
967 ls
968 docker network ls
969 history
970 docker network ls
971 ip a
972 clear
973 docker run -itd --net=host ubuntu
974 docker ps
975 docker exec -it 02dbd55b117b
976 docker exec -it 02dbd55b117b /bin/bash
977 docker network ls
978 docker run -itd --net=none ubuntu
979 docker ps
980 clear
981 docker inspect acbdccd6591d
982 clear
983 docker ps
984 docker exec -it acbdccd6591d /bin/bash
985 docker network ls
Reference
- https://www.devopsschool.com/blog/docker-lab-excercise-assignment-4-docker-networking/
- https://www.devopsschool.com/blog/docker-network/