1、如何运行容器和指定容器启动时执行的命令?

docker run 是启动容器的方法,可用三种方式指定容器启动时执行的命令:
1、CMD 指令。
2、ENDPOINT 指令。
3、在 docker run 命令行中指定。

2、如何让容器长期运行?

容器的生命周期依赖于启动时执行的命令,只要该命令不结束,容器也就不会退出。我们就可以通过执行一个长期运行的命令来保持容器的运行状态。

root@richardo-docker01:~# docker run -d centos /bin/bash -c "while true;do sleep 1;done"
a2a8d3b49ee5b51ee5be92da9b08ca57dd74d151837696578885298100cbdab1
root@richardo-docker01:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
a2a8d3b49ee5        centos              "/bin/bash -c 'while…"   6 seconds ago       Up 3 seconds                                 xenodochial_keller
741390e28eb4        registry:2          "/entrypoint.sh /etc…"   58 minutes ago      Up 58 minutes       0.0.0.0:5000->5000/tcp   naughty_noether
root@richardo-docker01:~# docker stop a2a8d3b49ee5
a2a8d3b49ee5
root@richardo-docker01:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
741390e28eb4        registry:2          "/entrypoint.sh /etc…"   About an hour ago   Up About an hour    0.0.0.0:5000->5000/tcp   naughty_noether

3、容器如何运行后台服务?并且指定容器的名字?

root@richardo-docker01:~# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
entrypoint-image                 latest              18ed25a11432        6 hours ago         215MB
cmd-image                        latest              69028b7e9882        6 hours ago         215MB
my-image                         latest              1e0fcff0c90e        7 hours ago         1.23MB
qwx619766/my-image               v1                  1e0fcff0c90e        7 hours ago         1.23MB
centos-with-vim-dockerfile-3     latest              f41e704ce73b        8 hours ago         272MB
centos-with-vim-dockerfile-2     latest              fa86e8214b98        2 days ago          272MB
centos-with-vim-dockerfile       latest              e99684eeca8a        3 days ago          272MB
centos-with-vim                  latest              0ec55bc57a3d        3 days ago          272MB
busybox                          latest              f0b02e9d092d        4 weeks ago         1.23MB
127.0.0.1:5000/qwx619766/httpd   v1                  3dd970e6b110        4 weeks ago         138MB
centos                           latest              0d120b6ccaa8        3 months ago        215MB
registry                         2                   2d4f4b5309b1        5 months ago        26.2MB
hello-world                      latest              bf756fb1ae65        10 months ago       13.3kB
root@richardo-docker01:~# docker history 3dd970e6b110
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
3dd970e6b110        4 weeks ago         /bin/sh -c #(nop)  CMD ["httpd-foreground"]     0B
<missing>           4 weeks ago         /bin/sh -c #(nop)  EXPOSE 80                    0B
<missing>           4 weeks ago         /bin/sh -c #(nop) COPY file:c432ff61c4993ecd…   138B
<missing>           4 weeks ago         /bin/sh -c #(nop)  STOPSIGNAL SIGWINCH          0B
<missing>           4 weeks ago         /bin/sh -c set -eux;   savedAptMark="$(apt-m…   60.9MB
<missing>           4 weeks ago         /bin/sh -c #(nop)  ENV HTTPD_PATCHES=           0B
<missing>           4 weeks ago         /bin/sh -c #(nop)  ENV HTTPD_SHA256=740eddf6…   0B
<missing>           4 weeks ago         /bin/sh -c #(nop)  ENV HTTPD_VERSION=2.4.46     0B
<missing>           4 weeks ago         /bin/sh -c set -eux;  apt-get update;  apt-g…   7.38MB
<missing>           4 weeks ago         /bin/sh -c #(nop) WORKDIR /usr/local/apache2    0B
<missing>           4 weeks ago         /bin/sh -c mkdir -p "$HTTPD_PREFIX"  && chow…   0B
<missing>           4 weeks ago         /bin/sh -c #(nop)  ENV PATH=/usr/local/apach…   0B
<missing>           4 weeks ago         /bin/sh -c #(nop)  ENV HTTPD_PREFIX=/usr/loc…   0B
<missing>           4 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>           4 weeks ago         /bin/sh -c #(nop) ADD file:0dc53e7886c35bc21…   69.2MB
root@richardo-docker01:~# docker run --name "my_http_server" -d 127.0.0.1:5000/qwx619766/httpd
Unable to find image '127.0.0.1:5000/qwx619766/httpd:latest' locally
docker: Error response from daemon: manifest for 127.0.0.1:5000/qwx619766/httpd:latest not found: manifest unknown: manifest unknown.
See 'docker run --help'.
root@richardo-docker01:~# docker run --name "my_http_server" -d 127.0.0.1:5000/qwx619766/httpd:v1
443224c14b81f334e1fd053a409dcbaa5d5cc6426d60a4e7638ee62b5cdef935
root@richardo-docker01:~# docker ps
CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS                    NAMES
443224c14b81        127.0.0.1:5000/qwx619766/httpd:v1   "httpd-foreground"       11 seconds ago      Up 9 seconds        80/tcp                   my_http_server
741390e28eb4        registry:2                          "/entrypoint.sh /etc…"   About an hour ago   Up About an hour    0.0.0.0:5000->5000/tcp   naughty_noether