一、基本命令
1、docker 查看docker的命令
2、docker pull --help 查具体命令的使用
3、docker run ubuntu:15.10 /bin/echo "Hello world"
各个参数解析:
- docker: Docker 的二进制执行文件。
- run:与前面的 docker 组合来运行一个容器。
- ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- /bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
4、docker run -i -t ubuntu:15.10 /bin/bash 进入ubuntu:15.10系统容器
5、docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 以进程方式运行的容器
一、容器的使用
1、docker ps 查看正在运行的容器
2、 docker stop 容器名/容器id 停止容器
3、docker start 容器名/容器id 开启容器
4、docker restart 容器名/容器id 重启容器
5、docker rm 容器名/容器id 删除容器
docker rm -f 容器名/容器id 强制删除容器
6、docker logs 容器名/容器id 查看容器标准输出
7、当docker容器在 “-d”守护态运行的时候,用户就无法直接进入到容器中去,docker attach 容器id 就会一直卡着。因为此时容器运行的进程是ssh,而不是/bin/bash 也没有虚拟终端(-it)参数,所以是进入不到的。可用: docker exec -it containerID /bin/bash
docker exec -it [容器ID] /bin/bash
二、镜像的使用
- docker images 查看镜像列表 等同于docker image ls
- docker pull 镜像名 拉取镜像
- docker run -i -t ubuntu:15.10 /bin/bash 使用镜像启动容器
- 自己构建镜像
一、用Dockerfile文件构建
1、编写Dockerfile文件
2、docker build -t runoob/centos:6.7 . -t 要创建的目标镜像名 . Dockerfile文件的绝对路径
二、更新镜像的方法
1、进入容器内docker run -t -i ubuntu:15.10 /bin/bash
2、在容器内执行apt-get update
3、退出容器exit; 然后
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
各个参数说明:
- -m:提交的描述信息
- -a:指定镜像作者
- e218edb10161:容器ID
- runoob/ubuntu:v2:指定要创建的目标镜像名
5.设置镜像标签
docker tag 镜像id ylc/ubuntu:v1 :镜像源名(repository name)和新的标签名(tag)
6.删除镜像
docker rmi 镜像id
docker rmi -f 强制删除
三、示例
1、nginx安装
a、docker pull nginx 从远程拉取nginx镜像
b、在本地新建一个文件夹,文件夹里新建几个文件
cd /test/nginx
新建conf log www的目录
在conf目录新建文件 nginx.conf
在log 目录新建access.log 和error.log文件
在www目录新建index.html文件
c、nginx.conf 内容
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /opt/nginx/log/access.log;
error_log /opt/nginx/log/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
##
# Virtual Host Configs
##
server {
listen 80 default_server;
listen [::]:80 default_server;
root /opt/nginx/www;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
}
注意:
access_log /opt/nginx/log/access.log; error_log /opt/nginx/log/error.log;
root /opt/nginx/www;
都是nginx容器里的路径,因为此nginx.conf 是挂载到容器里的。
index.htm内容
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> </head> <body> <h2>Hello docker nginx</h2> </body> </html>
d、启动nginx容器:
docker run -p 1200:80 --name mynginx -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/www:/opt/nginx/www -v $PWD/log:/opt/nginx/log -d nginx
-p 1200:80:将容器的80端口映射到主机的1200端口 -name mynginx:将容器命名为mynginx -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf -v $PWD/www:/opt/nginx/www:将主机中当前目录下的www挂载到容器的/opt/nginx/www,参考nginx.conf的root配置 -v $PWD/log:/opt/nginx/log:将主机中当前目录下的log挂载到容器的/opt/nginx/log,参考nginx.conf的log配置
注意:要到/test/nginx目录去执行,因为$PWD指当前目录。同时自己也可以挂载更多的文件或者目录
e、当进入到容器后:
用ctrl+p+q退出,不能用exit,否则会关闭容器