Basic operation of Redhat Atomic

1. Install docker on RHEL7.x

Step1. Register to Candlepin and auto subscribe pool

# subscription-manager register [email protected] --password=xxxxx

# subcsription-manager subscribe --auto

Step2: Start docker

# systemctl enable docker-registry

 

2. Manipulate images on Atomic

2.1 List images:

-bash-4.2# docker images

REPOSITORY                        TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

docker.io/ubuntu                  12.04               04c3793b1229        7 days ago          136 MB

2.2 Check the history of images

# docker history [image name]

eg: -bash-4.2# docker history docker.io/ubuntu:12.04

IMAGE               CREATED             CREATED BY                                      SIZE               COMMENT

10e4cff604d3        18 hours ago        /bin/sh -c yum install -y ruby                  43.24 MB 

2b77dea62586        18 hours ago        /bin/sh -c #(nop) MAINTAINER Shihliu

90579908b6df        19 hours ago        /bin/bash                                       138.4 MB           Added virt-who on Centos

52169ed95140        19 hours ago                                                        564.3 MB           Imported from -

2.3 Search images on pub warehouse

-bash-4.2# docker search [search content]

-bash-4.2# docker search redhat

INDEX        NAME                                                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

redhat.com   registry.access.redhat.com/rhel                                         This platform image provides a minimal run...   0          

redhat.com   registry.access.redhat.com/rhel6                                        This platform image provides a minimal run...   0          

redhat.com   registry.access.redhat.com/rhel6.5                                      This platform image provides a minimal run...   0          

redhat.com   registry.access.redhat.com/rhel6.6                                      This platform image provides a minimal run...   0          

redhat.com   registry.access.redhat.com/rhel6.7                                      This platform image provides a minimal run...   0          

redhat.com   registry.access.redhat.com/rhel6.8                                      This platform image provides a minimal run...   0

2.4 Pull images

From pub warehouse

Format: [registry_url]/[user_name:]image_name[:tag_name]

eg 1:

[root@docker ~]# docker pull openshift/hello-openshift:latest

latest: Pulling from openshift/hello-openshift

a3ed95caeb02: Pull complete

8d7b44c26512: Pull complete

Digest: sha256:d5cd38487a54866069ebc1a5867f08729df7d3ddd17c010e537f088d49e0ef68

Status: Downloaded newer image for openshift/hello-openshift:latest

eg 2:

# docker pull [image name]

eg: -bash-4.2# docker search redhat

redhat.com   registry.access.redhat.com/rhel                                         This platform image provides a minimal run...   0          

redhat.com   registry.access.redhat.com/rhel6                                        This platform image provides a minimal run...   0

-bash-4.2# docker pull rhel

Using default tag: latest

Trying to pull repository registry.access.redhat.com/rhel ...

latest: Pulling from registry.access.redhat.com/rhel

30cf2e26a24f: Pull complete

99dd41655d8a: Pull complete

Digest: sha256:f50654a25c5bbf3b72e343e038db4ff92b39dd6ef2e52c251458981e8213beef

Status: Downloaded newer image for registry.access.redhat.com/rhel:latest

From non-pub warehouse

# docker pull [warehouse server]/[image name]

eg: # docker pull registry.access.redhat.com/jboss-processserver-6/processserver63-openshift

Pull all images from the same repository

# docker pull --all-tags [REPOSITORY]

[root@docker config]# docker pull --all-tags fedora

2.5  Import the contents from a tarball to create a image

Step1:  Download template to local or save one or more images to a tar archive

Eg: [root@docker ~]# wget Download/template/precreated - OpenVZ Virtuozzo Containers Wiki /fedora-24-x86_64-20160708.tar.xz

or

# docker save [image name]>[xxx.tar]

[root@docker ~]# docker save ansible/centos7-ansible>ansibe-centos1.tar

Step2:  Import tar file to image

# cat [template file name] | docker import - [image name]:[tag]

[root@docker ~]# cat fedora-24-x86_64-20160708.tar.xz  |docker import - fedora:24

[root@docker ~]#  cat ansibe-centos1.tar  |docker import - ansible-centos:7

sha256:018d5d122f65ab5efeeddbafc2a0f2a5785a0fe6c3d74f7dba89a4ca1eb580dc

Step3. Check the imported image.

[root@docker ~]# docker images

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE

ansible-centos          7                   018d5d122f65        12 seconds ago      717.7 MB   ===> It has been imported successfully.

fedora                    24                  93b21ad4250a        24 seconds ago      695.1 MB    ===> It has been imported successfully.

2.6 Create a  image from a container's changes

# docker commit [CONTAINER ID] [REPOSITORY[:TAG]]

Step1: List containers

[root@docker ~]# docker ps

CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS             PORTS                       NAMES

50cf6a612c0b        training/webapp           "python app.py"     2 days ago          Up 2 days           127.0.0.1:32768->5000/tcp   sleepy_liskov

1c626011c3e9        training/webapp           "python app.py"     2 days ago          Up 2 days           0.0.0.0:32771->5000/tcp     web

9a9f8b99611d        ansible/centos7-ansible   "/bin/bash"         5 days ago          Up 2 days                                       pensive_curie

[root@docker ~]# docker commit 9a9f8b99611d  ansible-centos7:version3

sha256:45c2ec91843543884db1fdc563eaaf73db3caa5438c7ef2dde16f565f6308734

[root@docker ~]# docker images

REPOSITORY                                                                   TAG                 IMAGE ID           CREATED             SIZE

ansible-centos7                                                              version3            45c2ec918435        8 seconds ago       699.1 MB   ===> It has been created

2.7 Push an image to Docker Hub

Step1: Register a user in Docker Hub(https://hub.docker.com/account/signup/ )

eg: The new username is "dockertest"

Step2: Push the image to Docker Hub

# docker push [USERNAME]/[IMAGE]

eg:

[root@docker config]# docker push dockertest/fedora

The push refers to a repository [registry.hub.docker.com/shaoqq/centos] (len: 0)

Sending image list

Please login prior to push:

Username (dockertest):

WARNING: login credentials saved in /root/.docker/config.json

Login Succeeded

The push refers to a repository [registry.hub.docker.com/dockertest/fedora] (len: 0)

Sending image list

Authentication is required.

The push refers to a repository [docker.io/dockertest/fedora]

a5cc1a9730b1: Layer already exists

24: digest: sha256:a2ce54462365f100ee1931de5f70e955bac92baebc6e50c245e06f2547b468cf size: 529

Step3: Check the image on Docker Hub under the username

Login in to Docker Hub with provided user , then go to "Repositories", it should show the image

2.8 Tagging an image referenced by ID

# docker tag [IMAGE ID] [REPOSITORY]:[TAGE]

eg: [root@docker ~]# docker images

REPOSITORY                                                                   TAG                 IMAGE ID           CREATED             SIZE

                                                                                     d61e30531dac        2 hours ago        119.2 MB

[root@docker ~]# docker tag d61e30531dac fedora/httpd:version1.0

[root@docker ~]# docker images

REPOSITORY                                                                   TAG                 IMAGE ID           CREATED             SIZE

fedora/httpd                                                                 version1.0          d61e30531dac        2 hours ago         119.2 MB  ===> It has been tagged

2.9 Remove images

Remove one image:

# docker rmi [image name]/[image id]

eg: -bash-4.2# docker images

REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE

registry.access.redhat.com/rhel6.8   latest              aa9a755bcffe        2 weeks ago         195.4 MB   ===>It will be delete.

docker.io/ubuntu                     12.04               60df6678b255        11 weeks ago        139.3 MB

-bash-4.2# docker rmi registry.access.redhat.com/rhel6.8

Untagged: registry.access.redhat.com/rhel6.8:latest

Deleted: sha256:aa9a755bcffe80d6c5d47e0cc177c026bfd683b6ce31273dd0f1752f4c757602

Deleted: sha256:cdf970bf7f2d127521a74a3441f75d84430e60b2301c5994445fa3b50968f10b

Deleted: sha256:a317c8e49afcb6e87e88d2cc2a92495cd6e082b29b987e0ad64c8b195b28c58f

-bash-4.2# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

docker.io/ubuntu    12.04               60df6678b255        11 weeks ago        139.3 MB

Remove all images with the same image ID:

# docker rmi -f [IMAGE ID]

eg:

-bash-4.2# docker images

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE

test1                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)

test                      latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)

test2                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)

-bash-4.2# docker rmi -f fd484f19954f

Untagged: test1:latest

Untagged: test:latest

Untagged: test2:latest

Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

 

3. Manipulate containers on Atomic

3.1 Create container

Create container with local images

# docker create -it [IMAGE_NAME]/[IMAGE_ID]

eg:

-bash-4.2# docker images

REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE

docker.io/ubuntu                  12.04               60df6678b255        11 weeks ago        139.3 MB

-bash-4.2# docker create -it docker.io/ubuntu:12.04

d073f2ac22b07168b65be79561b68a458ae716faf5d5513568d12be0735c0043

-bash-4.2# docker ps -a

CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                         PORTS               NAMES

d073f2ac22b0        docker.io/ubuntu:12.04                   "/bin/bash"              6 seconds ago        Created                                            hopeful_torvalds    ==> It has been created

Create container with non-local images and run command

# docker create -it [IMAGE_NAME]/[IMAGE_ID] [command]

-bash-4.2# docker create -t -i fedora bash

Unable to find image 'fedora:latest' locally

Trying to pull repository registry.access.redhat.com/fedora ...

unknown: Not Found

Trying to pull repository docker.io/library/fedora ...

latest: Pulling from docker.io/library/fedora

2bf01635e2a0: Pull complete

Digest: sha256:64a02df6aac27d1200c2572fe4b9949f1970d05f74d367ce4af994ba5dc3669e

Status: Downloaded newer image for docker.io/fedora:latest

1967aff0d25d6c5da83ad28c868ca547d529bf332d773877c1fb07a053a16d71

-bash-4.2# docker ps -a

CONTAINER ID        IMAGE                                    COMMAND                  CREATED            STATUS                         PORTS               NAMES

1967aff0d25d        fedora                                   "bash"                   6 minutes ago       Created                                            drunk_dijkstra   ==> It has been created

3.2 Run a command in a new container

Start a bash terminal, allow user interactive

# docker run -i -t [REPOSITORY]:[tag] /bin/bash

eg: -bash-4.2# docker images

REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE

registry.access.redhat.com/rhel   latest              98a88a8b722a        5 weeks ago         201.4 MB    ===> Run with this image

docker.io/ubuntu                  12.04               60df6678b255        11 weeks ago        139.3 MB

-bash-4.2# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS             PORTS               NAMES      ===> No container

-bash-4.2# docker run -i -t registry.access.redhat.com/rhel:latest /bin/bash

[root@68ebe854396c /]# exit                ===> Entered container

-bash-4.2# docker ps -a

CONTAINER ID        IMAGE                                    COMMAND             CREATED            STATUS                     PORTS               NAMES

68ebe854396c        registry.access.redhat.com/rhel:latest   "/bin/bash"         15 seconds ago      Exited (0) 7 seconds ago                       prickly_jennings  ===> It has been run

Excute command on container, then terminal container

# docker run  [REPOSITORY]:[tag] [command]

-bash-4.2# docker run registry.access.redhat.com/rhel:latest /bin/echo 'Hello world'

Hello world                                          ===> Hasn't entered container

-bash-4.2# docker ps -a

CONTAINER ID        IMAGE                                    COMMAND                  CREATED            STATUS                        PORTS               NAMES

06b6c9d5d821        registry.access.redhat.com/rhel:latest   "/bin/echo 'Hello wor"   10 seconds ago      Exited (0) 6 seconds ago                          sick_bell   ===> It has been run

68ebe854396c        registry.access.redhat.com/rhel:latest   "/bin/bash"              4 minutes ago       Exited (127) 19 seconds ago                       prickly_jennings

Assign container name and allocate pseudo-TTY

# docker run --name [container_name] -it [image_name]

[NOTE]: If image is not exit on local, it will get it from other warehouse(eg:docker.io)

eg: -bash-4.2# docker run --name test -it debian

Unable to find image 'debian:latest' locally

Trying to pull repository registry.access.redhat.com/debian ...

unknown: Not Found

Trying to pull repository docker.io/library/debian ...

latest: Pulling from docker.io/library/debian

6a5a5368e0c2: Pull complete

Digest: sha256:677f184a5969847c0ad91d30cf1f0b925cd321e6c66e3ed5fbf9858f58425d1a

Status: Downloaded newer image for docker.io/debian:latest

root@d216a6eb29b2:/# ls

bin  boot  dev etc  home  lib lib64  media  mnt  opt proc  root  run  sbin  srv  sys  tmp  usr var

root@d216a6eb29b2:/# exit

-bash-4.2# docker ps -a|grep debian

d216a6eb29b2        debian                                   "/bin/bash"              5 minutes ago      Exited (0) 18 seconds ago                         test   ===> It has been run

3.3 Start containers

Start one container with non-interactive mode.

# docker start [CONTAINER ID]

eg: -bash-4.2# docker start  68ebe854396c

68ebe854396c                                 ===> It hasn't entered container

-bash-4.2# docker ps -a

CONTAINER ID        IMAGE                                    COMMAND                  CREATED            STATUS                      PORTS               NAMES

68ebe854396c        registry.access.redhat.com/rhel:latest   "/bin/bash"   55 minutes ago     Up   6 seconds                             prickly_jennings      ===> It has been started

Start one container with interactive mode.

# docker start -i [CONTAINER ID]

-bash-4.2# docker start -i 68ebe854396c

[root@68ebe854396c /]# ls             ===> It has entered container

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp usr  var

Start many containers at once

# docker start [CONTAINER1 ID] [CONTAINER2 ID] .....

eg: -bash-4.2# docker start d216a6eb29b2 68ebe854396c

d216a6eb29b2

68ebe854396c

-bash-4.2# docker ps -a

CONTAINER ID        IMAGE                                    COMMAND                  CREATED            STATUS                     PORTS               NAMES

d216a6eb29b2        debian                                   "/bin/bash"              45 minutes ago      Up 6 seconds                                   test                        ===> Two containers has been started

68ebe854396c        registry.access.redhat.com/rhel:latest   "/bin/bash"              About an hour ago   Up 5 seconds                  prickly_jennings

3.4 Pause container

Pause one container

# docker pause [CONTAINER]

Pause many containers at once

# docker pause [CONTAINER_1] [CONTAINER_2] ...

3.5 Stop container

Stop one container

# docker stop [CONTAINER]

Stop many containers at once

# docker stop [CONTAINER_1] [CONTAINER_2] ...

3.6 Kill running container

Kill one container

# docker kill [CONTAINER]

Kill many containers at once

# docker kill [CONTAINER_1] [CONTAINER_2] ...

3.7 List all containers

# docker ps -a

eg: -bash-4.2# docker ps -a

CONTAINER ID        IMAGE                                    COMMAND                  CREATED            STATUS                        PORTS               NAMES

d216a6eb29b2        debian                                   "/bin/bash"              37 minutes ago     Exited (0) 32 minutes ago                         test

06b6c9d5d821        registry.access.redhat.com/rhel:latest   "/bin/echo 'Hello wor"   47 minutes ago      Exited (0) 47 minutes ago                         sick_bell

68ebe854396c        registry.access.redhat.com/rhel:latest   "/bin/bash"              52 minutes ago      Exited (127) 47 minutes ago                       prickly_jennings

3.8 Attach to a running container

docker attach [CONTAINER]

eg: -bash-4.2# docker ps -a

CONTAINER ID        IMAGE                                    COMMAND                  CREATED            STATUS                       PORTS               NAMES

68ebe854396c        registry.access.redhat.com/rhel:latest   "/bin/bash"              About an hour ago   Exited (137) 3 minutes ago                       prickly_jennings

-bash-4.2# docker start 68ebe854396c

68ebe854396c

-bash-4.2# docker attach 68ebe854396c

[root@68ebe854396c /]#

3.9 Run a command in a running container

# docker exec [OPTIONS] [CONTAINER] [COMMAND]

eg: create /tmp/aaa in container 65b9efb5be21

Step1: Start container

[root@docker config]# docker start 65b9efb5be21

65b9efb5be21

Step2: Run command

[root@docker config]# docker exec -it 65b9efb5be21 touch /tmp/test

Step3: Enter container

[root@docker config]# docker attach 65b9efb5be21

Step4: Check the result, /tmp/aaa has been created

[root@65b9efb5be21 ansible]# cd /tmp

[root@65b9efb5be21 tmp]# ls

aaa  ks-script-VNahoJ  test      ===>"test" is exist

3.10 Shows us the standard output of a container

# docker logs [CONTAINER]

[root@docker config]# docker logs 1c626011c3e9

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

10.66.128.63 - - [11/Oct/2016 05:30:18] "GET / HTTP/1.1" 200 -

10.66.128.63 - - [11/Oct/2016 05:30:18] "GET /favicon.ico HTTP/1.1" 404 -

3.11 Copy file between container and local machine

Copy container's file to local machine

# docker cp [OPTIONS] [CONTAINER]:[SRC_PATH] [DEST_PATH]

eg:

-bash-4.2# docker cp test:/root/test /root

-bash-4.2# ls /root

anaconda-ks.cfg  test   ===> "test" has been copied to local machine

Copy local machine's file to container

# docker cp [OPTIONS] [SRC_PATH] [CONTAINER]:[DEST_PATH]

eg:

-bash-4.2# docker cp /root/test2 test:/root

-bash-4.2# docker attach test

root@d216a6eb29b2:/# cd /root

root@d216a6eb29b2:~# ls

test  test2                    ===>"test2" has been copied to container "test"

3.12 Statistic containers resource usage

Statistic all containers's resource usage

# docker stats -a

eg:

[root@docker config]# docker stats -a

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O            BLOCK I/O           PIDS

65b9efb5be21        --                  -- / --                 --                  -- / --             -- / --             --

b0678fe9721b        --                  -- / --                 --                  -- / --             -- / --             --

50cf6a612c0b        --                  -- / --                 --                  -- / --             -- / --             --

1c626011c3e9        0.02%               2.469 MiB / 993.1 MiB   0.25%               6.5 kB / 1.912 kB  14.5 MB / 0 B       0

e2bc0a64087f        --                  -- / --                 --                  -- / --             -- / --             --

9a9f8b99611d        --                  -- / --                 --                  -- / --             -- / --             --

Statistic live containers's resource usage

# docker stats

[root@docker config]# docker stats

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O            BLOCK I/O           PIDS

1c626011c3e9        0.02%               2.469 MiB / 993.1 MiB   0.25%               6.5 kB / 1.912 kB  14.5 MB / 0 B       0

3.13 List metadata about a container

# docker inspect [CONTAINER]

eg:

[root@docker ~]# docker inspect 4a1d7a6fe23d

[

    {

        "Id": "4a1d7a6fe23de04ee6fe5f8b82fb5212c2ba4ad8aa9bc9566376ff426d700629",

        "Created": "2016-11-01T00:25:29.720078954Z",

        "Path": "/hello-openshift",

        "Args": [],

        "State": {

            "Status": "running",

            "Running": true,

            "Paused": false,

            "Restarting": false,

            "OOMKilled": false,

            "Dead": false,

            "Pid": 23700,

            "ExitCode": 0,

            "Error": "",

            "StartedAt": "2016-11-01T00:25:35.754337168Z",

            "FinishedAt": "0001-01-01T00:00:00Z"

        },

        "Image": "sha256:6728c37f01345982eff1e32147b010e205fe142f492c9185f74ecb9f983b79f4",

.........

3.14 Delete container

Delete specified container

# docker rm [CONTAINER]

Delete all containers

# for id in $(docker  ps -aq); do docker rm $id; done

猜你喜欢

转载自blog.csdn.net/qq_33744949/article/details/80283550