/bin/sh -c "ping localhost"
FROM centos:7
CMD echo "Hello world"
FROM centos:7
CMD echo "Bonjour à tous"
docker build .
Exemple 1:
FROM centos:7
ENTRYPOINT ["/bin/ping","-c","5"]
CMD ["localhost"]
docker build -t my-ping .
docker run my-ping
Exemple 2:
FROM centos:7
CMD ping localhost
docker build -t my-ping-cmd .
docker run my-ping-cmd ls
Exemple 3:
FROM centos:7
ENTRYPOINT ping localhost
docker build -t my-ping-entrypoint .
docker run --entrypoint ls my-ping-entrypoint
Surcharge de my-ping:
docker run my-ping google.com
Format exécution:
FROM centos:7
ENTRYPOINT ["ping","google.com"]
docker build -t ping-google-exec .
docker run --rm --name test ping-google-exec
Format terminal:
FROM centos:7
ENTRYPOINT ping google.com
docker build -t ping-google-shell .
docker run --rm --name test ping-google-shell
FROM centos:7
RUN yum update -y && yum install -y \
openssh-server \
passwd
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
RUN useradd user
RUN echo -e "pass\npass" | (passwd --stdin user)
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
docker build -t ssh .
Mappage automatique:
docker run -P -d ssh
Mappage manuel:
docker run -d -p 22 ssh
docker run -d -p 35022:22 ssh
docker inspect --format='{{json .ContainerConfig.ExposedPorts}}' ssh {"22/tcp":{}}
ssh user@localhost -p 35022
FROM centos:7
RUN pwd > /tmp/initialPath
RUN mkdir output
RUN cd output
RUN pwd > /tmp/pathAfterOutput
ADD test1 ./
ADD ["test2" , "/output/"]
CMD ls /output
docker build -t add .
docker run --rm add
docker run --rm add ls /
docker run --rm add cat /tmp/initialPath
docker run --rm add cat /tmp/pathAfterOutput
Quand une facilité de l'instruction ADD devient un inconvénient:
FROM centos:7
ADD wordpress-4.4.1-fr_FR.tar.gz /tmp/
CMD ls /tmp
docker build -t untar .
docker run --rm untar
docker run --rm untar ls /tmp/wordpress
Dockerfile multicopy1:
FROM centos:7
COPY test1.tar.gz /tmp/
RUN tar xzf /tmp/test1.tar.gz
COPY test2.tar.gz /tmp/
RUN tar xzf /tmp/test2.tar.gz
Dockerfile multicopy2:
FROM centos:7
COPY test1.tar.gz test2.tar.gz /tmp/
RUN tar xzf /tmp/test1.tar.gz
RUN tar xzf /tmp/test2.tar.gz
docker build -t multicopy1 .
docker build -t multicopy2 .
Avec volume:
FROM centos:7
VOLUME /tmp/data
CMD ping localhost
docker build -t volume .
docker run -d --name volume-conteneur volume
docker inspect --format='{{json .Mounts}}' volume-conteneur
docker exec volume-conteneur ls /tmp/data
docker exec volume-conteneur /bin/sh -c 'echo "Hello" > /tmp/data/helloTest'
docker exec volume-conteneur ls /tmp/data
docker stop volume-conteneur
docker rm volume-conteneur
docker run -d -v /var/home/vagrant/data:/tmp/data --name volume-conteneur volume
docker exec volume-conteneur /bin/sh -c 'echo "Hello" > /tmp/data/helloTest'
sudo ls /var/home/vagrant/data
sudon'est en fait pas nécessaire dans l'exemple ci-dessus
docker stop volume-conteneur
docker rm volume-conteneur
Sans volume:
FROM centos:7
# VOLUME /tmp/data
CMD ping localhost
docker build -t volume .
docker run -d -v /var/home/vagrant/data:/tmp/data --name volume-conteneur volume
docker exec volume-conteneur /bin/sh -c 'echo "Hello" > /tmp/data/helloTest'
docker inspect --format='{{json .Mounts}}' volume-conteneur
ls /var/home/vagrant/data/
https://docs.docker.com/develop/develop-images/multistage-build/