English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Detailed Explanation of Basic Docker Commands

Basic concepts of Docker

Docker is an open-source application container engine that allows developers to package their applications and dependencies into portable containers and then deploy them on any popular Linux machine.

Docker is an open platform that redefines the process of program development, testing, delivery, and deployment. Docker can be called 'Build once, Run anywhere', which means you can build once and run it anywhere.

Create an image

There are three methods to create an image:

Create based on an existing container

Import based on local template

Based on dockerfile

Create based on an existing container

Mainly use the docker commit command, command format:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:tag]], mainly includes:

-a ,--author="" author information
-m,--message="" commit message
-p,--pause=true pause the container at commit

For example:

# docker run -it centos /bin/bash
[root@d7e7ac1cbca2 /]# touch test
[root@d7e7ac1cbca2 /]# ls 
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test tmp usr var
# docker commit -m "add a file" -a "kafeikele" de6 centos_copy
5d318afa9e6f7fdb755db97e29e3860b752f24b0b50e6bfa0b7e457450802c0e
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos_copy latest 5d318afa9e6f 13 seconds ago 196.7 MB

Import based on local template

It is recommended to use the templates provided by openVZ to create

https://openvz.org/Download/templates/precreated
#cat centos-7-x86_64-minimal.tar.gz.crdownload | docker import - centos:latest

Export and import images

# docker images
centos 7.1.1503 47a77536ad4c 8 weeks ago 212.1 MB
# docker save -o centos_7.1.tar centos:7.1.1503 
# docker load --input centos_7.1.tar
# docker load < centos_7.1.tar

Based on dockerfile

The following content is detailed introduction

Run the first docker container

# docker run centos echo "hello world"
Unable to find image 'centos:latest' locally
latest: Pulling from centos
47d44cb6f252: Pull complete
168a69b62202: Pull complete
812e9d9d677f: Pull complete
4234bfdd88f8: Pull complete
ce20c473cd8a: Pull complete
centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide
security.
Digest: sha256:3aaab9f1297db9b013063c781cfe901e2aa6e7e334c1d1f4df12f25ce356f2e5
Status: Downloaded a newer image for centos:latest
hello world

Command description:

docker run: Standard container start command

centos: The name of the image, default is latest

echo and the following content: the command executed after the container starts

Start an interactive container

docker run -it centos /bin/bash

*Note:-t indicates that a pseudo terminal or terminal is specified inside the container-i indicates that we can interact with the STDIN inside the container

Start a docker container as a service

If you actually test, you may have found that the first 'hello world' container exited after executing the echo command, and the second interactive container exited as soon as the user exited the current container's bash. This clearly does not meet the requirements of a service running for a long time. That's why docker run provides '-d' parameter can be used to start the container as a daemon process.

docker run -d centos /bin/bash -c "while true; do echo Docker,hello world; sleep 2; <br>179fc7f17c358834364d23112aa26d6a9e1875b2281563720425f62a8f1b5c33

This long string is called the container ID. It is the unique identifier of the container, so we can use it to operate the container, such as view logs, stop, or delete the container, etc.

dock logs 179fc7f17c358834364d

And why use a deadlock to output?

Because if it is not a deadlock, the process in the container will end after one output. When all the unique processes in the container end, the container stops. Therefore, if you want to run a specific service in the container, this service itself must also be run in the container as a daemon process.

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Main options:

-d : Run the container in the background
-t : Provide a pseudo terminal
--t-If the 'i' option is used, the container cannot be exited after it starts
-v : Map a volume to the container, such as: -p /data/www:/var/www/html
-p : Map the container's port to the host machine, such as: -p 8080:80

More command operations

# docker images List all local images
# docker search centos Search for images from the default image repository
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 2767 [OK] 
ansible/centos7-ansible Ansible on Centos7 90 [OK]
jdeathe/centos-ssh CentOS-6 6.8 x86_64 / CentOS-7 7.2.1511 x8... 42 [OK]
jdeathe/centos-ssh-apache-php CentOS-6 6.8 x86_64 - Apache / PHP / PHP M... 21 [OK]
nimmis/java-centos These are the docker images of CentOS 7 with dif... 17 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC sessi... 14 [OK]
#docker pull centos Download the image to the local
#docker create -it ubuntu:latest Create a container
Unable to find the image 'ubuntu:latest' locally
latest: Pulling from ubuntu
58488e45273c: Pull complete 
25810b66099e: Pull complete 
6571ba684f54: Pull complete 
6ed49a73d8f0: Pull complete 
c53777cbfc31: Pull complete 
56465e1e45d2: Pull complete 
Digest: sha256:312986132029d622ae65423ca25d3a3cf4510de25c47b05b6819d61e2e2b5420
Status: Downloaded a newer image for ubuntu:latest
1330233e50aba7fca99e5914bd28dd89321bc86ec35fb36b4775d3424337c190
The container created by the docker create command is in a stopped state and needs to be started with docker start
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1330233e50ab ubuntu:latest "/bin/bash" About a minute ago happy_engelbart
The docker run command is equivalent to first executing the docker create command, and then executing the docker start command
# docker run ubuntu /bin/echo "hello world"
hello world

Enter the container

Method One:

# docker attach a54615a88787 Followed by the container name or ID, the docker container will also exit after exiting, not commonly used

Method Two:

# docker exec -it a54615a88787 /bin/bash Followed by the container name or ID

Method Three:

yum -y install util-linux
# docker inspect --format "{{.State.Pid}}" stupefied_cray The last part is the container name
4899
# nsenter --target 4899 --mount --uts --ipc --net --pid

Script

#!/bin/bash
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target $CPID --mount --uts --ipc --net –pid

The above is the detailed explanation of the basic Docker commands introduced by the editor for everyone. I hope it will be helpful to everyone. If you have any questions, please leave a message, and the editor will reply to everyone in time. I am also very grateful for everyone's support of the Yelling Tutorial website!

Statement: The content of this article is from the Internet, and the copyright belongs to the original author. The content is contributed and uploaded by Internet users spontaneously. This website does not own the copyright, has not been manually edited, and does not assume any relevant legal liability. If you find any content suspected of copyright infringement, please send an email to: notice#oldtoolbag.com (Please replace # with @ when sending an email to report violations, and provide relevant evidence. Once verified, this site will immediately delete the infringing content.)

You May Also Like