一.容器的基本操作

1. 启动容器



docker run IMAGE [COMMAND] [ARG...]



run 在新容器中执行命令



eg: docker run ubuntu echo 'Hello World'



输出内容的同时,启动的容器已经停止,这是一个实行单次命令的容器



 



2. 启动交互式容器



docker run -i -t IMAGE /bin/bash



-i --interactive=true|false 默认是false



-t --tty=true|false 默认是false



eg:



docker run -i -t ubuntu /bin/bash 
ps -ef 
exit(退出)



 



3.查看容器



docker ps [-a][-l] 默认显示正在运行中的容器



-a 列出所有的容器



-l 列出最新创建的容器



$ docker inspect [容器id/容器Name]



 



4.自定义容器名



docker run --name=自定义名 -i -t IMAGE /bin/bash



eg: docker run --name=container01 -i -t ubuntu /bin/bash



 



5.重新启动停止的容器



docker start [-i] 容器名(-i已交互的方式)



eg: docker start -i container01



 



6.删除停止的容器



docker rm 容器名/id (只能删除停止的容器)



 



二.守护式容器

1.以守护形式运行容器



什么是守护式容器? 长期运行的容器,没有交互式的会话,适合应用程序运行



docker run -i -t IMAGE /bin/bash    
Ctrl+P Ctrl+Q    (后台运行)    
docker ps 可以查看到正在运行的容器



 



2.附加到运行中的容器



docker attach 容器名/id



 



3.启动守护式容器



docker run -d 镜像名 [COMMAND][ARG...]



eg: $ docker run --name dc1 -d ubuntu /bin/sh -c "while true;do echo hello world;sleep 1;done"



(使用shell脚本,当任务执行完,守护式容器依旧会停止)



 



4. 查看容器日志



docker logs [-f] [-t] [--tail] 容器名



-f --follows=true|false 默认为false (一直跟踪日志的变化,并返回结果)



-t --timestamps=true}false 默认为false (在返回的结果上加上时间戳)



--tail="all" (返回的结尾处多少数量的日志,不指定则返回所有的日志)



eg:



docker logs -tf --tail 10 dc1



docker logs -tf --tail 0 dc1 (tail 0 只显示最新的日志)



 



5.查看容器内进程



docker top 容器名



 



6.在运行中的容器内启动新进程



docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...] (与run命令相似)



 



7.停止守护式容器



docker stop 容器名 (会等待容器的停止) 
docker kill 容器名 (直接停止容器)



 

8.使用Docker帮助文件



man docker-run    
man docker-logs    
man docker-top    
man docker-exec    
...



 



三.在容器中部署静态站点

1.设置容器的端口映射



run [P] [p]



-P, --publish-all=true|false 默认为false 为容器暴露的所有端口进行映射



eg: docker run -P -i -t ubuntu /bin/bash



 



-p, --publish=[] 能够制定映射容器的哪些端口



  1. containerPort 只制定容器的端口,宿主机的端口随机映射

eg: docker run -p 80 -i -t ubuntu /bin/bash



  1. hostPort:containerPort 同时制定宿主机端口和容器端口,一一对应

eg: docker run -p 8080:80 -i -t ubuntu /bin/bash



  1. ip::containerPort

eg: docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash



  1. ip:hostPort:containerPort

eg: docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash



 



2.Nginx部署流程

  1. 创建映射80端口的交互式容器
  2. 安装Nginx
  3. 安装文本编辑器vim
  4. 创建静态页面
  5. 修改Nginx配置文件
  6. 运行Nginx
  7. 验证网站访问
docker run -p 80 --name web -i -t ubuntu /bin/bash
apt-get install -y nginx
apt-get install -y vim
mkdir -p /var/www/html
cd /var/www/html
vim index.html



<html>
<head>
    <title>Nginx in docker</title>
</head>
<body>
    <h1>Hello, I'm website in docker!</h1>
</body>
</html>



whereis nginx
vim /etc/nginx/sites-enabled/default
修改root 的值为静态网站根目录(/var/www/html)
cd /    返回根目录
nginx    运行nginx
ps -ef    查看nginx进程



Ctrl+P Ctrl+Q 退出



docker ps 查看容器映射的端口



docker port



docker top



 



  1. 通过宿主机的ip地址查看

curl http://127.0.0.1:*** 查看网站返回内容 
 
 
 
2. 通过容器的ip地址查看

   docker inspect web 获取容器的ip地址 
 
 
 

   curl http://容器ip 
 
 
 

     
 
 
 

   docker stop web 重启容器 
 
 
 

   docker start web 
 
 
 

   docker exec web nginx 
 
 
 

   docker inspect web


停止一个容器并重新启动时,原先的ip地址和映射的端口也不一样