dockers学习笔记5--container
[root@localhost docker_test]# docker run bigni/test3 #运行 docker so easy ! [root@localhost docker_test]# docker container ls #查看在运行的tontainer,发现没有上面运行的container,原因是上面的程序不是常驻内存的进程,程序结束后,docker便退出了。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost docker_test]# docker container ls -a #查看所有container,包括退出的 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8c3e652d7321 bigni/test3 "/soeasy.sh" 14 seconds ago Exited (0) 13 seconds ago xenodochial_diffie 80e6e373f1d4 cfbfd0a29d1c "/soeasy.sh" 36 minutes ago Exited (0) 36 minutes ago dreamy_mendel 934e574a077d e2b5b08cc31c "/soeasy.sh" 39 minutes ago Exited (1) 39 minutes ago nostalgic_lehmann 871a7d62acc1 f5620b92331c "/soeasy2" About an hour ago Exited (15) About an hour ago serene_spence 72fd56c76100 hello-world "/hello" 43 hours ago Exited (0) 43 hours ago trusting_pasteur [root@localhost docker_test]#
[root@1c4586fe95ee /]# touch test.sh #container是在image之上创建的一个可读写的layer
[root@1c4586fe95ee /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys test.sh tmp usr var
[root@1c4586fe95ee /]#
交互式启动容器
想办法让常驻内存,比如可以进入 centos 交互式运行
[root@localhost docker_test]# docker run -it centos [root@1c4586fe95ee /]# ls anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [root@1c4586fe95ee /]# ifconfig #这个centos发行版很多工具没装 bash: ifconfig: command not found [root@1c4586fe95ee /]# vim bash: vim: command not found [root@1c4586fe95ee /]# vi [root@1c4586fe95ee /]#
进入到centos操作系统了,这时我在宿主机另起一个session查看containers
[root@localhost docker_test]# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1c4586fe95ee centos "/bin/bash" About a minute ago Up About a minute agitated_banzai [root@localhost docker_test]#
非交互式启动容器
[root@localhost ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE mhart/alpine-node latest 42bfa7acee09 3 weeks ago 108MB alpine 3.10 e7b300aee9f9 4 weeks ago 5.58MB alpine latest 6dbb9cc54074 4 weeks ago 5.61MB hello-world latest d1165f221234 2 months ago 13.3kB [root@localhost ~]# docker run -d --name alpine_sleep alpine:3.10 /bin/sleep 300 883e654b45726116b8f8d89536f40cffafcfee63897b5faa5f4d381de1fb51b9 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 883e654b4572 alpine:3.10 "/bin/sleep 300" 50 seconds ago Up 48 seconds alpine_sleep b133723326c4 hello-world "/hello" 18 hours ago Exited (0) 18 hours ago naughty_wozniak [root@localhost ~]# 这里有进程夯住之后 容器就不会挂掉了
在宿主机查看进程
[root@localhost ~]# ps aux |grep sleep|grep -v grep root 23771 0.0 0.0 1540 248 ? Ss 17:52 0:00 /bin/sleep 300 root 23829 0.0 0.0 107952 356 ? S 17:54 0:00 sleep 60 [root@localhost ~]# docker用了宿主机的内核 所以虽然是隔离的 但是在宿主机仍然可以查看到docker的进程 而且有自己的pid
启动容器(运行镜像)
docker run是日常用的最频繁用的命令之一,同样也是较为复杂的命令之一
命令格式: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS :选项
-i:表示启动-一个可交互的容器, 并持续打开标准输入
-t:表示使用终端关联到容器的标准输入输出上
-d :表示将容器放置后台运行
--rm:退出后即删除容器
--name :表示定义容器唯一名称
IMAGE :表示要运行的镜像
COMMAND :表示启动容器时要运行的命令*
ARG:参数