7. Docker Build

7.1. Build images

$ docker build . -t IMAGE_NAME
$ docker build . -t myimg
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM alpine:latest
 ---> 961769676411
Step 2/3 : RUN apk add bash
 ---> Running in 5148740edf53
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ncurses-terminfo-base (6.1_p20190518-r0)
(2/5) Installing ncurses-terminfo (6.1_p20190518-r0)
(3/5) Installing ncurses-libs (6.1_p20190518-r0)
(4/5) Installing readline (8.0.0-r0)
(5/5) Installing bash (5.0.0-r0)
Executing bash-5.0.0-r0.post-install
Executing busybox-1.30.1-r2.trigger
OK: 15 MiB in 19 packages
Removing intermediate container 5148740edf53
 ---> 99ec117fc810
Step 3/3 : CMD /bin/bash
 ---> Running in 6a1b630dbfae
Removing intermediate container 6a1b630dbfae
 ---> ce299736b126
Successfully built ce299736b126
Successfully tagged myimg:latest
$ docker build . -t myimg:1.0.0
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM alpine:latest
 ---> 961769676411
Step 2/3 : RUN apk add bash
 ---> Running in 5148740edf53
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ncurses-terminfo-base (6.1_p20190518-r0)
(2/5) Installing ncurses-terminfo (6.1_p20190518-r0)
(3/5) Installing ncurses-libs (6.1_p20190518-r0)
(4/5) Installing readline (8.0.0-r0)
(5/5) Installing bash (5.0.0-r0)
Executing bash-5.0.0-r0.post-install
Executing busybox-1.30.1-r2.trigger
OK: 15 MiB in 19 packages
Removing intermediate container 5148740edf53
 ---> 99ec117fc810
Step 3/3 : CMD /bin/bash
 ---> Running in 6a1b630dbfae
Removing intermediate container 6a1b630dbfae
 ---> ce299736b126
Successfully built ce299736b126
Successfully tagged myimg:1.0.0
$ docker build . -t myimg
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM alpine:latest
 ---> 961769676411
Step 2/3 : RUN apk add bash
 ---> Running in 5148740edf53
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ncurses-terminfo-base (6.1_p20190518-r0)
(2/5) Installing ncurses-terminfo (6.1_p20190518-r0)
(3/5) Installing ncurses-libs (6.1_p20190518-r0)
(4/5) Installing readline (8.0.0-r0)
(5/5) Installing bash (5.0.0-r0)
Executing bash-5.0.0-r0.post-install
Executing busybox-1.30.1-r2.trigger
OK: 15 MiB in 19 packages
Removing intermediate container 5148740edf53
 ---> 99ec117fc810
Step 3/3 : CMD /bin/bash
 ---> Running in 6a1b630dbfae
Removing intermediate container 6a1b630dbfae
 ---> ce299736b126
Successfully built ce299736b126
Successfully tagged myimg:latest

7.2. List images

$ docker images

7.3. Remove images

$ docker rmi IMAGE_NAME_OR_ID

7.4. Build Workflow

  1. Write Dockerfile

    FROM alpine:latest
    RUN apk add bash
    CMD /bin/bash
    
  2. Build image

    $ docker build . -t myimg
    
  3. Run image

    $ docker run -it myimg
    
  4. List images

    $ docker images
    

8. Docker Hub

  1. Build

    $ docker build . -t myimg:1.0.0
    
  2. Tag

    $ docker tag myimg:1.0.0 myusername/myimg:latest
    
  3. Publish

    $ docker login
    $ docker push myusername/myimg:latest
    
  4. Clean local build

    $ docker image remove myimg:1.0.0
    
  5. Run from Hub

    $ docker run myusername/myimg
    

9. Use Cases

10. Assignments

10.1. Create container and run

  1. Ściągnij repozytorium:

  2. Zbuduj projekt / lub uruchom testy

  3. Przygotuj obraz oraz uruchom aplikację wykorzystując Docker

  4. Użyj pliku Dockerfile do opisu środowiska kontenera