022、如何运行容器(2019-01-15 周二)

 
之前的章节学习了如何构建Docker镜像,并通过镜像运行容器,从今天开始学习容器的各种操作,容器各种状态之间如何转换,以及实现容器的底层技术
 
运行容器
 
dokcer run 是运行容器的方法,之前我们已经学习了三种指定容器启动时执行命令的方法
    1、CMD 指令
    2、ENTRYPOINT 指令
    3、在 docker run 命令行中指定
 
在下面的例子中,发现docker run运行后容器直接退出了,没有持续运行
 
root@docker-lab:~# docker run ubuntu pwd
/
root@docker-lab:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@docker-lab:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
a4f89f53eaa3        ubuntu              "pwd"               6 seconds ago        Exited (0) 5 seconds ago                       quizzical_shtern
root@docker-lab:~#
 
 
如何让容器长期运行
 
容器的生命周期依赖启动时执行的命令,只要该命令不结束,容器也就不会退出
 
下面的例子可以保证容器不会退出,但是这样占用了一个终端,当终端关闭的时候容器也就退出了,这并不是我们想要的效果
 
root@docker-lab:~# docker run busybox ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.070 ms
64 bytes from 127.0.0.1: seq=1 ttl=64 time=0.103 ms
64 bytes from 127.0.0.1: seq=2 ttl=64 time=0.056 ms
64 bytes from 127.0.0.1: seq=3 ttl=64 time=0.055 ms
64 bytes from 127.0.0.1: seq=4 ttl=64 time=0.054 ms
64 bytes from 127.0.0.1: seq=5 ttl=64 time=0.054 ms
64 bytes from 127.0.0.1: seq=6 ttl=64 time=0.060 ms
64 bytes from 127.0.0.1: seq=7 ttl=64 time=0.054 ms
64 bytes from 127.0.0.1: seq=8 ttl=64 time=0.053 ms
64 bytes from 127.0.0.1: seq=9 ttl=64 time=0.053 ms
 
 
新开一个终端进行查看
 
root@docker-lab:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                            PORTS               NAMES
0683d1da57ed        busybox             "ping 127.0.0.1"    16 seconds ago        Up 16 seconds                                         ecstatic_visvesvaraya
 
 
docker run -d 可以让容器在后台启动,不会占用终端
 
当容器启动是会返回一长串字符,这串字符是该容器的ID,docker ps 中也看到一个ID,但是只有12位,这12位是容器完整ID的前12个字符
docker ps 中还能看到容器的名字,如果启动容器是不使用 --name 指定容器名称,docker会自动给容器起一个名字
 
长ID、短ID和NAME 都能代表一个具体的容器
 
root@docker-lab:~# docker run -d busybox ping  127.0.0.1
40112e9d5ae06f399c1c1ed4a1033725975b9a0473025d417aeee419d61fc213
root@docker-lab:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
40112e9d5ae0        busybox             "ping 127.0.0.1"    6 seconds ago        Up 5 seconds                            focused_mendeleev
root@docker-lab:~# docker stop 40112e9d5ae0
40112e9d5ae0
root@docker-lab:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                       PORTS               NAMES
40112e9d5ae0        busybox             "ping 127.0.0.1"    About a minute ago    Exited (137) 2 seconds ago                       focused_mendeleev
root@docker-lab:~#
root@docker-lab:~# docker run --name test022 -d busybox ping  127.0.0.1
80971ed377ae31567097d58c43a1e818d3d099c8a3881534683e36aa57a5c519
root@docker-lab:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                        PORTS               NAMES
80971ed377ae        busybox             "ping 127.0.0.1"    3 seconds ago        Up 2 seconds                                      test022
40112e9d5ae0        busybox             "ping 127.0.0.1"    About a minute ago   Exited (137) 47 seconds ago                       focused_mendeleev
 
 
 

猜你喜欢

转载自www.cnblogs.com/www1707/p/10274994.html