容器启动时执行命令的三种方式:1)CMD命令,2)ENTRYPOINT指令 ,3)在docker run命令中指定
docker run ubuntu pwd //容器启动时,执行pwd命令
执行docker ps或docker container ls 可以查看docker host中当前运行的容器;执行docker ps -a 或dokcer container ls -a可以查看所有状态的容器。
让容器长期运行
有些容器运行一闪而过,如何保持其长期运行呢 ?
docker run -d --name myfirstcontiner ubuntu /bin/bash -c "while true;do sleep 1;done"
-d :后台运行
--nane:为容器制定一个名字
停止容器
docker stop 容器id/名字
通过
docker history 容器name/id
可以查看其运行情况
两种进入容器的方法
1)docker attach
通过docker attach可以attach到容器启动命令的终端
通过’长id‘attach到了容器的启动命令终端。
退出attach使用CTRL-p CTRL-q方式比较简单,只需要注意docker run时要同时指定-it选项。该方式只会退出docker attach,对容器没有影响。如果-it选项没有同时指定,CTRL-p CTRL-q无法生效
其他退出方式
上面两种方式在退出时都有限制,有没有其他方法呢?
其实,我们只要另起一个终端,把docker attach进程杀死就可以了
#终端1中执行,没有同时指定-it,CTRL-p CTRL-q无法退出
doujl@ubuntu:~$ docker run -id centos:7 /bin/bash
00c031965cb2075643e15a3b88141026e753a79e8b03b960880d505950488014
doujl@ubuntu:~$ docker attach 00c0
^P
/bin/bash: line 1: $'\020': command not found
^P
#终端2中杀死docker attach进程
doujl@ubuntu:~/dettach$ pkill -9 -f 'docker.*attach'
doujl@ubuntu:~/dettach$
docker exec
-it以交互的方式打开终端,执行bash,其结果就是打开了一个bash终端
ps -elf:显示容器进程
执行exit可以退出容器
容器常用命令
docker stop id/name
docker kill id/name :快速停止
docker start name
docker restart name
#若想在容器错误停止的时候自动重启
docker run -d --restart=always name
#若启动进程退出代码非0,则重启容器,次数不超过3
docker run -d --restart=on-failure:3 name
#希望容器暂停,对容器文件打快照
docker pause name/id
#处于暂停状态的容器不会占用cpu
docker unpause id/name
#删除容器
docker rm id/name
#批量删除所有已经退出的容器
docker rm -v $(docker ps -aq -f status=exited)
#删除镜像
docker rmi name
#可以先创建容器然后在启动
docker create httpd(容器name)
docker start id/name