@22221cjp
2016-08-17T15:26:41.000000Z
字数 10609
阅读 3270
docker

//查看运行中的容器chenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES//以交互的方式启动一个容器chenjp@chenjp ~> docker run -i -t ubuntu /bin/bashroot@e7c0d3fb4db2:/# lsbin boot core dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varroot@e7c0d3fb4db2:/# exitexit//指定一个名字给容器,并以交互方式启动chenjp@chenjp ~> docker run --name=container01 -i -t ubuntu /bin/bashroot@43f4830b9979:/# exitexitchenjp@chenjp ~>//查看所有容器,包括没有运行的chenjp@chenjp ~> docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES43f4830b9979 ubuntu "/bin/bash" 6 seconds ago Exited (0) 3 seconds ago container01e7c0d3fb4db2 ubuntu "/bin/bash" 4 minutes ago Exited (0) 44 seconds ago kickass_galileoa472c6897f70 ubuntu "/bin/bash" 5 minutes ago Exited (0) 5 minutes ago nauseous_northcutta8c5642b8917 ubuntu "echo 'hello world'" 17 hours ago Exited (0) 17 hours ago elated_rosalind//查看一个容器的详细信息chenjp@chenjp ~> docker inspect container01[{"Id": "43f4830b9979dc67eadb4c59a3b7623eff64df4f10d7320893ee5d08791eb727","Created": "2016-06-29T04:10:53.973189611Z","Path": "/bin/bash","Args": [],......]chenjp@chenjp ~> docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES43f4830b9979 ubuntu "/bin/bash" 49 seconds ago Exited (0) 46 seconds ago container01e7c0d3fb4db2 ubuntu "/bin/bash" 5 minutes ago Exited (0) About a minute ago kickass_galileoa472c6897f70 ubuntu "/bin/bash" 6 minutes ago Exited (0) 5 minutes ago nauseous_northcutta8c5642b8917 ubuntu "echo 'hello world'" 17 hours ago Exited (0) 17 hours ago elated_rosalindchenjp@chenjp ~>//启动一个已有的容器chenjp@chenjp ~> docker start -i container01root@43f4830b9979:/# exitexit//删除一个容器chenjp@chenjp ~> docker rm a472c6897f70a472c6897f70chenjp@chenjp ~> docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES43f4830b9979 ubuntu "/bin/bash" 2 minutes ago Exited (0) 34 seconds ago container01e7c0d3fb4db2 ubuntu "/bin/bash" 6 minutes ago Exited (0) 2 minutes ago kickass_galileoa8c5642b8917 ubuntu "echo 'hello world'" 17 hours ago Exited (0) 17 hours ago elated_rosalindchenjp@chenjp ~>
docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。
所以每次运行一个命令,就会启动一个新的容器,命令执行完,容器也停止运行。
命令
在容器中运行"echo"命令,输出"hello word"
$docker run image_name echo "hello word"交互式进入容器中
$docker run -i -t image_name /bin/bash在容器中安装新的程序
$docker run image_name apt-get install -y app_name
Note: 在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。
列出当前所有正在运行的container
$docker ps
列出所有的container
$docker ps -a
列出最近一次启动的container
$docker ps -l
//先启动一个交互式容器chenjp@chenjp ~> docker run -i -t ubuntu /bin/bashroot@2382e8592761:/#root@2382e8592761:/#//ctrl+p,ctrl+q退出容器,这样容器在后台还是运行的root@2382e8592761:/# ⏎ chenjp@chenjp ~>//可以看到正在运行的容器chenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES2382e8592761 ubuntu "/bin/bash" 10 seconds ago Up 9 seconds thirsty_shockley//attach命令进入正在运行的容器chenjp@chenjp ~> docker attach 2382e859276root@2382e8592761:/#root@2382e8592761:/# exitexitchenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES//-d 选项启动一个后台运行的容器chenjp@chenjp ~> docker run --name dc1 -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 1;done"be5d51c595ad3d48d2d3f4cc59d0b66b7d37ddf880c932c43a8dc231652f7fb8chenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESbe5d51c595ad ubuntu "/bin/bash -c 'while " 4 seconds ago Up 4 seconds dc1//查看后台运行进程的输出chenjp@chenjp ~> docker logs dc1hello worldhello worldhello worldhello worldhello world//-t 参数加上时间戳chenjp@chenjp ~> docker logs -t dc12016-06-29T04:39:27.577351874Z hello world2016-06-29T04:39:28.586155642Z hello world2016-06-29T04:39:29.592244369Z hello world2016-06-29T04:39:30.596451294Z hello world2016-06-29T04:39:31.599440130Z hello world2016-06-29T04:39:32.600847783Z hello world2016-06-29T04:39:33.602869388Z hello world2016-06-29T04:39:34.606732679Z hello world2016-06-29T04:39:35.611214345Z hello world2016-06-29T04:39:36.615387406Z hello world2016-06-29T04:39:37.619017518Z hello world2016-06-29T04:39:38.622770002Z hello world2016-06-29T04:39:39.629660081Z hello world2016-06-29T04:39:40.633735385Z hello world2016-06-29T04:39:41.639099510Z hello world2016-06-29T04:39:42.643882643Z hello world2016-06-29T04:39:43.648979443Z hello world2016-06-29T04:39:44.652386880Z hello world2016-06-29T04:39:45.658231737Z hello world2016-06-29T04:39:46.661891560Z hello world//-f参数结尾处追踪日志变化chenjp@chenjp ~> docker logs -tf dc12016-06-29T04:39:27.577351874Z hello world2016-06-29T04:39:28.586155642Z hello world2016-06-29T04:39:29.592244369Z hello world2016-06-29T04:39:30.596451294Z hello world2016-06-29T04:39:31.599440130Z hello world2016-06-29T04:39:32.600847783Z hello world2016-06-29T04:39:33.602869388Z hello world2016-06-29T04:39:34.606732679Z hello world2016-06-29T04:39:35.611214345Z hello world2016-06-29T04:39:36.615387406Z hello world2016-06-29T04:39:37.619017518Z hello world2016-06-29T04:39:38.622770002Z hello world2016-06-29T04:39:39.629660081Z hello world2016-06-29T04:39:40.633735385Z hello world2016-06-29T04:39:41.639099510Z hello world2016-06-29T04:39:42.643882643Z hello world2016-06-29T04:39:43.648979443Z hello world2016-06-29T04:39:44.652386880Z hello world2016-06-29T04:39:45.658231737Z hello world2016-06-29T04:39:46.661891560Z hello world2016-06-29T04:39:47.666111271Z hello world2016-06-29T04:39:48.672527925Z hello world2016-06-29T04:39:49.691585586Z hello world2016-06-29T04:39:50.701563422Z hello world2016-06-29T04:39:51.708281812Z hello world^C⏎//-tail 10 查看最后10条日志,并追踪日志结尾的变化chenjp@chenjp ~> docker logs -tf --tail 10 dc12016-06-29T04:41:45.253501976Z hello world2016-06-29T04:41:46.257801323Z hello world2016-06-29T04:41:47.265063096Z hello world2016-06-29T04:41:48.270734023Z hello world2016-06-29T04:41:49.277254086Z hello world2016-06-29T04:41:50.282140475Z hello world2016-06-29T04:41:51.292175575Z hello world2016-06-29T04:41:52.298688571Z hello world2016-06-29T04:41:53.302544576Z hello world2016-06-29T04:41:54.307738459Z hello world2016-06-29T04:41:55.310530133Z hello world2016-06-29T04:41:56.312541632Z hello world2016-06-29T04:41:57.316037117Z hello world2016-06-29T04:41:58.318919076Z hello world2016-06-29T04:41:59.321621337Z hello world2016-06-29T04:42:00.325557087Z hello world^C⏎//只看最新的日志,且追踪chenjp@chenjp ~> docker logs -tf --tail 0 dc12016-06-29T04:42:05.349032121Z hello world2016-06-29T04:42:06.353431628Z hello world2016-06-29T04:42:07.360419029Z hello world2016-06-29T04:42:08.361967427Z hello world^C⏎//查看容器中的进程chenjp@chenjp ~> docker top dc1PID USER TIME COMMAND1936 root 0:00 /bin/bash -c while true;do echo hello world;sleep 1;done2133 root 0:00 sleep 1//在容器中启动新的进程chenjp@chenjp ~> docker exec -i -t dc1 /bin/bashroot@be5d51c595ad:/# ⏎ chenjp@chenjp ~>chenjp@chenjp ~> docker top dc1PID USER TIME COMMAND1936 root 0:00 /bin/bash -c while true;do echo hello world;sleep 1;done2292 root 0:00 /bin/bash2308 root 0:00 sleep 1chenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESbe5d51c595ad ubuntu "/bin/bash -c 'while " 6 minutes ago Up 6 minutes dc1//再启动一个后台运行的容器chenjp@chenjp ~> docker run -i -t ubuntu /bin/bashroot@121e68b5999a:/#root@121e68b5999a:/# ⏎ chenjp@chenjp ~>chenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES121e68b5999a ubuntu "/bin/bash" 6 seconds ago Up 6 seconds goofy_pikebe5d51c595ad ubuntu "/bin/bash -c 'while " 6 minutes ago Up 6 minutes dc1//stop温和的方式停止一个后台容器chenjp@chenjp ~> docker stop 121e68b5999a121e68b5999achenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESbe5d51c595ad ubuntu "/bin/bash -c 'while " 7 minutes ago Up 7 minutes dc1//kill 直接杀死后台运行的容器chenjp@chenjp ~> docker kill be5d51c595adbe5d51c595adchenjp@chenjp ~>chenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESchenjp@chenjp ~>



//启动一个容器,将容器的80端口映射出来,这种方式映射到宿主机的随机端口chenjp@chenjp ~> docker run -p 80 --name=web -i -t ubuntu /bin/bash//在容器中安装nginx,发现装不上root@d424f8733558:/# apt-get install -y nginxReading package lists... DoneBuilding dependency treeReading state information... DoneE: Unable to locate package nginx//udpate下root@d424f8733558:/# apt-get updateGet:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]......Fetched 23.5 MB in 2min 15s (174 kB/s)Reading package lists... Done//这下可以正常安装nginx了root@d424f8733558:/# apt-get install -y nginxReading package lists... DoneBuilding dependency treeReading state information... DoneThe following additional packages will be installed:......Processing triggers for systemd (229-4ubuntu6) ...root@d424f8733558:/# ⏎chenjp@chenjp ~> docker ps -a -lCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd424f8733558 ubuntu "/bin/bash" 7 hours ago Exited (0) 8 minutes ago 0.0.0.0:32768->80/tcp webchenjp@chenjp ~> docker attach d424f8733558You cannot attach to a stopped container, start it first//这中间隔了好久。容器已经停止了,重新启动下chenjp@chenjp ~> docker start -i d424f8733558root@d424f8733558:/# whereis nginxnginx: /usr/sbin/nginx /etc/nginx /usr/share/nginxroot@d424f8733558:/# cd /etc/nginx/conf.d/root@d424f8733558:/etc/nginx/conf.d# lsroot@d424f8733558:/etc/nginx/conf.d# cd ..//没有vim命令,安装下root@d424f8733558:/etc/nginx# vim nginx.confbash: vim: command not foundroot@d424f8733558:/etc/nginx# apt-get install -y vimReading package lists... DoneBuilding dependency treeReading state information... DoneThe following additional packages will be installed:......Processing triggers for libc-bin (2.23-0ubuntu3) ...root@d424f8733558:/etc/nginx# whereis vimvim: /usr/bin/vim /usr/bin/vim.basic /etc/vim /usr/share/vim /usr/share/man/man1/vim.1.gzroot@d424f8733558:/etc/nginx# lsconf.d fastcgi.conf fastcgi_params koi-utf koi-win mime.types nginx.conf proxy_params scgi_params sites-available sites-enabled snippets uwsgi_params win-utfroot@d424f8733558:/etc/nginx# vim nginx.confroot@d424f8733558:/etc/nginx# mkdir -p /var/www/html root@d424f8733558:/etc/nginx# cd /var/www/html/// 这个路径/var/www/html就是nginx的默认服务路径root@d424f8733558:/var/www/html# lsindex.nginx-debian.htmlroot@d424f8733558:/var/www/html# vim index.html//启动nginxroot@d424f8733558:/var/www/html# service nginx status* nginx is not runningroot@d424f8733558:/var/www/html# service nginx start* Starting nginx nginx [ OK ]root@d424f8733558:/var/www/html# service nginx status* nginx is runningroot@d424f8733558:/var/www/html# ⏎ chenjp@chenjp ~>chenjp@chenjp ~>//ctrl+p和ctrl+q退出,后台运行容器chenjp@chenjp ~> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd424f8733558 ubuntu "/bin/bash" 7 hours ago Up 8 minutes 0.0.0.0:32768->80/tcp web//查看容器的映射端口chenjp@chenjp ~> docker port web80/tcp -> 0.0.0.0:32768//查看容器中的进程chenjp@chenjp ~> docker top webPID USER TIME COMMAND1574 root 0:00 /bin/bash1864 root 0:00 nginx: master process /usr/sbin/nginx1865 xfs 0:00 nginx: worker process1866 xfs 0:00 nginx: worker process chenjp@chenjp ~> curl http://127.0.0.1:32768<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body><h1>Welcome to nginx!</h1><h1>Nginx in docker</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>chenjp@chenjp ~>
浏览器访问截图如下:

