容器的操作: $docker run IMAGE [COMMAND] [ARG...] : [COMMAND] [ARG...]是容器启动时运行的命令 $docker run ubuntu echo ‘hello world’ :启动容器并输出helloworld 启动交互式容器: $docker run -i -t IMAGE /bin/bash : 在容器启动时运行bash命令。 -i : 容器的守护进程始终打开标准输入 -t : 为创建的容器分配一个伪tty终端,这样新创建的容器才能提供一个交互试的shell $docker run -i -t ubuntu /bin/bash : 进入到了容器的bash中,就可以与新建立的容器进行交互, $ps -ef $exit : 退出这个交互式的容器 $docker ps [-a] [-l] : -a列出所有创建的容器,-l列出最新创建的容器 $docker ps -a : CONTAINER ID 是docker的守护进程在启动容器时为容器分配的唯一id,NAMES是docker的守护进程为容器分配的名字。 $docker inspect 53SDijuy678(容器的id) : 根据容器的id 返回容器的相关配置信息 $docker run --name=容器名字 -i -t ubuntu /bin/bash : 创建一个容器带有名字 $docker inspect 容器名字 : 返回 ’容器名’ 容器的相关配置信息 $docker start [-i] 容器名 :重新启动某个容器,-i是以交互的方式启动 $docker rm 容器名 :删除已经停止的容器
上面的容器是交互式容器,在命令结束后就停止,长期运行的容器是守护试的容器,能够长期运行,没有交互式的会话,适合运行应用程序和服务。 $docker run -i -t ubuntu /bin/bash : 启动交互式容器 $ctrl P,ctrl Q 来退出容器,使用docker ps (不是docker ps -a) 看到刚才建立的守护容器还在运行当中,docker ps -a是即使已经停止了也会显示出来。Dokcer ps 是查看后台运行的容器。这就是后台容器。 $docker attach 名字:进入后台运行的容器(不是后台运行的不能)
启动守护式容器: $docker run -d 容器名 [COMMAND] [ARG...] : -d启动容器时以后台的方式启动。 docker run --name=yw_shouhu_contain_2 -d ubuntu /bin/bash -c "while true ;do echo hello world;sleep 1;done" : 每隔一秒打印,-d只是以后台的形式运行命令,命令结束后容器依旧会停止, 4cd6c45f7a3f498af2b92d21255221d91d3d8c29d6ff9e80c16e7a0f41f0ba77 返回的是docker守护进程分配给容器的唯一id, yw1989@ubuntu:~$ yw1989@ubuntu:~$ docker ps :可以看到容器一直在运行 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4cd6c45f7a3f ubuntu "/bin/bash -c 'while…" 4 minutes ago Up 4 minutes yw_shouhu_contain_2
可以通过容器的日志命令,查看容器内部的运行状况: $docker logs [-f] [-t] [--tail] 容器名 -f: --follows=true|false,是否一直跟踪日志的变化并返回结果,为false就是值看到截止当前时间之前的,为true就是随时间变化一直在输出日志。 -t:返回的结果上加上时间戳 --tail:返回结尾处多少数量的日志,不指定就全部返回, --tail 10只显示10条。 yw1989@ubuntu:~$ docker logs -tf --tail 10 yw_shouhu_contain_2 2018-02-01T09:32:19.470722311Z hello world 2018-02-01T09:32:20.472716990Z hello world 2018-02-01T09:32:21.474790542Z hello world 2018-02-01T09:32:22.476651366Z hello world 2018-02-01T09:32:23.478520669Z hello world 查看容器的进程: $docker top 容器名:查看运行中容器的进程情况。 yw1989@ubuntu:~$ docker top yw_shouhu_contain_2 UID PID PPID C STIME TTY TIME CMD root 5306 5288 0 01:20 ? 00:00:00 /bin/bash -c while true ;do echo hello world;sleep 1;done
运行的容器中启动新的进程:Docker是一个容器运行一种服务,仍旧需要在docker中运行多个进程,比如对运行中的容器监控和管理。 $docker exec [-d][-i][-t] 容器名 [COMMAD][ARG...] -d: -i: -t: [COMMAD][ARG...]:是需要执行的命令和参数 yw1989@ubuntu:~$ docker exec -i -t yw_shouhu_contain_2 /bin/bash :容器中启动一个新的bash会话,ctrl+p,ctrl+q退出bash, yw1989@ubuntu:~$ docker top yw_shouhu_contain_2 : 可以看到bash的进程已经运行在容器中了 UID PID PPID C STIME TTY TIME CMD root 5306 5288 0 01:20 ? 00:00:00 /bin/bash -c while true ;do echo hello world;sleep 1;done root 6883 5288 0 01:43 pts/0 00:00:00 /bin/bash root 7018 5306 0 01:45 ? 00:00:00 sleep 1
停止守护式容器: $docker stop 容器名:发送信号容器,等待容器的停止 $docker kill 容器名: Ctrl+P ctrl+Q:将交互式的容器转到后台 Docker run -d :启动守护式容器 Docker logs :日志 Docker top:进程 在容器中部署静态网站: 设置容器的端口映射:run [-P][-p] -P:为容器暴露的所有端口进行映射,-p指定映射哪些容器的端口。 1.只指定容器的端口:docker run -p 80 -i -t ubuntu /bin/bash 2.指定宿主机的端口和容器的端口,这样的端口映射就是一一对应的:docker run -p 8080:80 -i -t /bin/bash 3.指定ip和容器的端口:docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash 4.指定ip、宿主机端口、容器端口:docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash