进学阁

业精于勤荒于嬉,行成于思毁于随

0%

docker 重要命令

镜像相关

  • 搜索镜像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 rmidocker 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
2
3
4
5
6
cd /dockerData/nginx/www
#使用vim 创建并编辑文件
vi index.html
#此时我们会进入vim界面,按 i 插入,然后输入
<h1 align="center">Hello,Welcome to Docker World</h1>
#输入完后,按 esc,然后输入 :wq
  • 再次访问浏览器地址

用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及无tag的镜像。

docker system prune

可以将没有容器使用 Docker 镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了 docker system prune -a