Docker

1. Image

Show all images.

(base) fighternan@fighternan:~$ sudo docker images
REPOSITORY                            TAG                         IMAGE ID               CREATED             SIZE fighternan/ubuntu-images    pure-sudo-ubuntu    f279d4808a3d        About an hour ago   115MB 

Delete an image.

(base) fighternan@fighternan:~$ sudo docker image rm fighternan/ubuntu-images:pure-sudo-ubuntu
Untagged: fighternan/ubuntu-images:pure-sudo-ubuntu
Untagged: fighternan/ubuntu-images@sha256:feeb413b7c4972111ceff1aedc99e6bc3c8a8cd33d975dc0280540b7a0482215
Deleted: sha256:f279d4808a3d861a5e2516cd23a86952b023f5348cad3aa97d35affa173df6db
Deleted: sha256:0d1f7f7d3080fb95c5c8df968f38d845b840febf1ccae02525fee8d5900937e2
(base) fighternan@fighternan:~$ sudo docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE

Run a container from an image foreground without clean up (–rm).

(base) fighternan@fighternan:~$ sudo docker run -it --name my_ubuntu ubuntu
root@47d83458b7f0:/#

2. Container

Show all containers.

(base) fighternan@fighternan:~$ sudo docker container ls -a
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                     PORTS               NAMES
47d83458b7f0        ubuntu                                      "/bin/bash"              2 minutes ago       Exited (0) 2 seconds ago                       my_ubuntu

Delete a container.

(base) fighternan@fighternan:~$ sudo docker container rm 152a75e1acb5

3. Commit & Push

We want to set up a new environment in the container from the latest pure ubuntu.

(base) fighternan@fighternan:~$ sudo docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Status: Downloaded newer image for ubuntu:latest

Then we create a container and install some packages. Say we install the sudo command.

(base) fighternan@fighternan:~$ sudo docker run -it --name my_ubuntu ubuntu
root@c9961f450ef1:/# apt-get update && \
>       apt-get -y install sudo

We exit the container and commit it to an image.

(base) fighternan@fighternan:~$ sudo docker ps -a
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS                            PORTS               NAMES
c9961f450ef1        ubuntu                                      "/bin/bash"              10 minutes ago      Exited (130) About a minute ago                       my_ubuntu

(base) fighternan@fighternan:~$ sudo docker commit --author "fighternan@gmail.com" -m "add sudo" my_ubuntu fighternan/ubuntu-images:pure-sudo-ubuntu

(base) fighternan@fighternan:~$ sudo docker images
REPOSITORY                          TAG                          IMAGE ID            CREATED             SIZE
fighternan/ubuntu-images    pure-sudo-ubuntu    f279d4808a3d        4 seconds ago       115MB

We finally push the image to our private docker repository so that we can use it anywhere.

(base) fighternan@fighternan:~$ sudo docker push fighternan/ubuntu-images:pure-sudo-ubuntu
The push refers to repository [docker.io/fighternan/ubuntu-images]
7ebf7c42b39e: Pushed 
b57c79f4a9f3: Layer already exists 
d60e01b37e74: Layer already exists 
e45cfbc98a50: Layer already exists 
762d8e1a6054: Layer already exists 

Now we can see it in our docker hub.

4. Copy Files

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH