Dockerfile:
FROM centos:latest
MAINTAINER Zoran Gagic <zorang@gmail.com>
# install crontabs
RUN yum -y update
RUN yum -y install crontabs bc
# change timezone
RUN cp /usr/share/zoneinfo/Australia/Sydney /etc/localtime
# comment out PAM
RUN sed -i -e '/pam_loginuid.so/s/^/#/' /etc/pam.d/crond
RUN chmod 0644 /etc/crontab
# install awsinfo
# Add crontab setting
#RUN echo '* * * * * root echo "Hi Earthlings! `date`" >> /tmp/test.log' >> /etc/crontab
RUN echo '* * * * * root echo "Hi Earthlings! `date`" >> /tmp/test.log' | crontab -
RUN mkdir -p /usr/local/bin /usr/local/awsinfo /root/.aws /root/awsdata/au
ADD entry.sh /usr/local/bin
ADD awsinfo.tgz /usr/local/awsinfo
ADD aws/* /root/.aws/
RUN cp /usr/local/awsinfo/awsinfo.config /root/awsdata/au/awsinfo.config
RUN cd /root; curl -O https://bootstrap.pypa.io/get-pip.py; python get-pip.py --user; export PATH=~/.local/bin:$PATH; pip install awscli --upgrade --user; pip install xlwt
RUN cp /usr/local/awsinfo/lambda/jq /bin; cp /usr/local/awsinfo/csvquote /bin
RUN chmod 755 /usr/local/bin/entry.sh /bin/jq /bin/csvquote
RUN yum install -y --nogpgcheck epel-release wget openssh-clients openssh-server net-tools
RUN mkdir /var/run/sshd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's!HostKey /etc/ssh/ssh_host_ecdsa_key!# HostKey /etc/ssh/ssh_host_ecdsa_key!' /etc/ssh/sshd_config
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
RUN echo root:topsecret123 | chpasswd
RUN useradd --create-home -G wheel -s/bin/bash zorang
RUN echo -n 'zorang:topsecret123' | chpasswd
RUN echo 'export PS1="[\u@docker-\h] \W # "' >> /root/.bash_profile
RUN echo 'export PATH=~/.local/bin:$PATH' >> /root/.bash_profile
EXPOSE 22
CMD ["/usr/local/bin/entry.sh"]
MAINTAINER Zoran Gagic <zorang@gmail.com>
# install crontabs
RUN yum -y update
RUN yum -y install crontabs bc
# change timezone
RUN cp /usr/share/zoneinfo/Australia/Sydney /etc/localtime
# comment out PAM
RUN sed -i -e '/pam_loginuid.so/s/^/#/' /etc/pam.d/crond
RUN chmod 0644 /etc/crontab
# install awsinfo
# Add crontab setting
#RUN echo '* * * * * root echo "Hi Earthlings! `date`" >> /tmp/test.log' >> /etc/crontab
RUN echo '* * * * * root echo "Hi Earthlings! `date`" >> /tmp/test.log' | crontab -
RUN mkdir -p /usr/local/bin /usr/local/awsinfo /root/.aws /root/awsdata/au
ADD entry.sh /usr/local/bin
ADD awsinfo.tgz /usr/local/awsinfo
ADD aws/* /root/.aws/
RUN cp /usr/local/awsinfo/awsinfo.config /root/awsdata/au/awsinfo.config
RUN cd /root; curl -O https://bootstrap.pypa.io/get-pip.py; python get-pip.py --user; export PATH=~/.local/bin:$PATH; pip install awscli --upgrade --user; pip install xlwt
RUN cp /usr/local/awsinfo/lambda/jq /bin; cp /usr/local/awsinfo/csvquote /bin
RUN chmod 755 /usr/local/bin/entry.sh /bin/jq /bin/csvquote
RUN yum install -y --nogpgcheck epel-release wget openssh-clients openssh-server net-tools
RUN mkdir /var/run/sshd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's!HostKey /etc/ssh/ssh_host_ecdsa_key!# HostKey /etc/ssh/ssh_host_ecdsa_key!' /etc/ssh/sshd_config
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
RUN echo root:topsecret123 | chpasswd
RUN useradd --create-home -G wheel -s/bin/bash zorang
RUN echo -n 'zorang:topsecret123' | chpasswd
RUN echo 'export PS1="[\u@docker-\h] \W # "' >> /root/.bash_profile
RUN echo 'export PATH=~/.local/bin:$PATH' >> /root/.bash_profile
EXPOSE 22
CMD ["/usr/local/bin/entry.sh"]
entry.sh:
#!/usr/bin/bash
nohup /usr/sbin/crond 2>&1 &
/usr/sbin/sshd
cat /usr/local/awsinfo/awsinfo2 | grep -v proxy > /tmp/tempfile; cp /tmp/tempfile /usr/local/awsinfo/awsinfo2
cat /usr/local/awsinfo/awsinfo2.sh | grep -v proxy > /tmp/tempfile; cp /tmp/tempfile /usr/local/awsinfo/awsinfo2.sh
#export PATH=~/.local/bin:$PATH
#/bin/bash
sleep 315360000
/usr/sbin/sshd
cat /usr/local/awsinfo/awsinfo2 | grep -v proxy > /tmp/tempfile; cp /tmp/tempfile /usr/local/awsinfo/awsinfo2
cat /usr/local/awsinfo/awsinfo2.sh | grep -v proxy > /tmp/tempfile; cp /tmp/tempfile /usr/local/awsinfo/awsinfo2.sh
#export PATH=~/.local/bin:$PATH
#/bin/bash
sleep 315360000
Install docker on AWS:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html
yum update -y
yum install -y git docker
sudo usermod -a -G docker ec2-user
service docker start
docker info
docker pull centos
docker images
docker run -i -t zorang/centos /bin/bash
docker build -t mycron .
docker run -i -t zorang/mycron /bin/bash
docker inspect zorang/mycron
docker login
docker push zorang/mycron
docker ps -a
docker run -i -t -v /home/ec2-user:/ec2-user zorang/mycron
docker run -i -t -v /home/ec2-user:/ec2-user zorang/mycron
for i in `docker ps -a | awk ' { print $1 } ' | grep -v CONT`; do docker rm $i; done
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rm $(docker kill $(docker ps -aq)))
docker volume rm $(docker volume ls -q)
docker rmi $(docker images -q)
docker run -p 2222:22 -v /home/ec2-user:/ec2-user zorang/mycron
ssh -p 2222 zorang@127.0.0.1
docker run -d ...
docker exec containername ps
Create docker container from VM:
tar --numeric-owner \
--exclude=/proc \
--exclude=/sys \
--exclude=/mnt \
--exclude=/var/cache \
--exclude=/usr/share/doc \
--exclude=/tmp \
--exclude=/var/log \
-zcvf /mnt/rhel7-base.tar.gz
tar --numeric-owner -cj --to-stdout . |docker import - nginx-image
cd /usr/x86_64-docker-linux-gnu/ && tar --numeric-owner -cj --to-stdout . --exclude=./{proc,sys,tmp/portage} .|docker import - gentoo-image
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
cat centos6-base.tar | docker import - centos6-base
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rm $(docker kill $(docker ps -aq)))
docker volume rm $(docker volume ls -q)
docker rmi $(docker images -q)
docker run -p 2222:22 -v /home/ec2-user:/ec2-user zorang/mycron
ssh -p 2222 zorang@127.0.0.1
docker run -d ...
docker exec containername ps
Create docker container from VM:
tar --numeric-owner \
--exclude=/proc \
--exclude=/sys \
--exclude=/mnt \
--exclude=/var/cache \
--exclude=/usr/share/doc \
--exclude=/tmp \
--exclude=/var/log \
-zcvf /mnt/rhel7-base.tar.gz
tar --numeric-owner -cj --to-stdout . |docker import - nginx-image
cd /usr/x86_64-docker-linux-gnu/ && tar --numeric-owner -cj --to-stdout . --exclude=./{proc,sys,tmp/portage} .|docker import - gentoo-image
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
cat centos6-base.tar | docker import - centos6-base
docker run -i -t centos6-base cat /etc/redhat-release
docker run --init # run an init inside containers to forward signals and reap processes
Dockerise Node.js app:
https://semaphoreci.com/community/tutorials/dockerizing-a-node-js-web-application
Dockerise Node.js app:
https://semaphoreci.com/community/tutorials/dockerizing-a-node-js-web-application
To run a full operating system in a container create the following Dockerfile:
FROM fedora:25
CMD /sbin/init
Then build and start the container and enter a shell inside it to explore the services running inside it:
docker build -t os .
docker run -d --privileged --name os os
docker exec -it os bash
FROM fedora:25
CMD /sbin/init
Then build and start the container and enter a shell inside it to explore the services running inside it:
docker build -t os .
docker run -d --privileged --name os os
docker exec -it os bash
See also:
https://docs.docker.com/engine/admin/multi-service_container/
http://phusion.github.io/baseimage-docker/
https://hub.docker.com/r/sumpfgottheit/centos7-baseimage/~/dockerfile/
No comments:
Post a Comment