镜像相关
- 搜索镜像docker search
如docker search nginx Docker就会在Docker Hub中搜索含有“nginx”这个关键词的镜像仓库 - 下载镜像docker pull 如docker pull nginx Docker就会在Docker Hub中下载含有“nginx”最新版本的镜像 当然也可以使用docker pull reg.jianzh5.com/nginx:1.7.9 下载指定仓库地址标签的nginx镜像
- 列出镜像docker images
- 删除镜像docker rmi如docker rmi hello-world删除我们刚刚下载的hello-world镜像
- 构建镜像docker build通过Dockerfile构建镜像,这个我们等下再拿出来详细说明。
容器相关
- 新建启动镜像docker run
这个命令是我们最常用的命令,主要使用以下几个选项
① -d选项:表示后台运行
② -P选项(大写):随机端口映射
③ -p选项(小写):指定端口映射,前面是宿主机端口后面是容器端口,如docker run nginx -p 8080:80,将容器的80端口映射到宿主机的8080端口,然后使用localhost:8080就可以查看容器中nginx的欢迎页了
④ -v选项:挂载宿主机目录,前面是宿主机目录,后面是容器目录,如docker run -d -p 80:80 -v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx 挂载宿主机的/dockerData/nginx/conf/nginx.conf的文件,这样就可以在宿主机对nginx进行参数配置了,注意目录需要用绝对路径,不要使用相对路径,如果宿主机目录不存在则会自动创建。
⑤–rm : 停止容器后会直接删除容器,这个参数在测试是很有用,如docker run -d -p 80:80 –rm nginx
⑥–name : 给容器起个名字,否则会出现一长串的自定义名称如 docker run -name niginx -d -p 80:80 - nginx - 列出容器 docker ps
这个命令可以列出当前运行的容器,使用-a参数后列出所有的容器(包括已停止的) - 停止容器docker stop
docker stop 5d034c6ea010 后面跟的是容器ID,也可以使用容器名称 - 启动停止的容器docker start
docker run是新建容器并启动,docker start 是启动停止的容器,如docker start 5d034c6ea010 - 重启容器docker restart
此命令执行的过程实际是先执行docker stop,然后再执行docker start,如docker restart 5d034c6ea010 - 进入容器docker exec -it 容器id /bin/bash
如 docker exec -it 5d034c6ea010 /bin/bash,就相当于进入了容器本身的操作系统 - 删除容器 docker rm
如docker rm 5d034c6ea010 后面跟的是容器ID,删除容器之前需要先停止容器运行 - 数据拷贝docker cp
此命令用于容器与宿主机之间进行数据拷贝,如 docker cp 5d034c6ea010: /etc/nginx/nginx.conf /dockerData/nginx/conf/nginx.conf 将容器的目录文件拷贝到宿主机指定位置,容器ID可以替换成容器名。
命令实战
如果我们需要一个nginx容器,并且需要在宿主机上直接修改nginx的配置文件、默认主页,在宿主机可以实时看到容器nginx的日志。我们可以按照如下的方式一步一步完成。
- 使用–rm参数启动容器,方便删除
docker run -d -p 8081:80 –name nginx –rm nginx - 进入容器,查看容器中配置文件、项目文件、日志文件的目录地址
docker exec -it 9123b67e428e /bin/bash - 导出容器的配置文件
docker cp nginx:/etc/nginx/nginx.conf /dockerData/nginx/conf/nginx.conf导出配置文件 nginx.confdocker cp nginx:/etc/nginx/conf.d /dockerData/nginx/conf/conf.d导出配置目录 conf.d - 停止容器docker stop 9123b67e428e,由于加了–rm参数,容器会自动删除
- 再以如下命令启动容器,完成目录挂载docker run -d -p 8081:80 –name nginx \ -v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /dockerData/nginx/www:/usr/share/nginx/html \ -v /dockerData/nginx/logs:/var/log/nginx nginx
- 访问服务器地址http://192.168.136.129:8081/
访问报错,这时候就进入宿主机的日志目录/dockerData/nginx/logs查看日志
2019/11/23 10:08:11 [error] 6#6: *1 directory index of “/usr/share/nginx/html/“ is forbidden, client: 192.168.136.1, server: localhost, request: “GET / HTTP/1.1”, host: “192.168.136.129:8081”
因为/usr/share/nginx/html/被挂载到了服务器上面的/dockerData/nginx/www目录下,原来的欢迎页面在dockerData/nginx/www是没有的,所有就报错了,这里我们随便建一个。 - 建立默认主页#打开项目文件
1 | cd /dockerData/nginx/www |
- 再次访问浏览器地址
用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及无tag的镜像。
docker system prune