Docker使用入门

By Gavin     @2019-12-13     938 views

Docker无论作为开发环境和生产环境,都是非常方便有效的。在微服务比较火的现在,好多大厂都会把docker当作生产环境使用,虽然有坑,但是很方便实用

使用Docker能够屏蔽掉绝大多数环境问题,特别是对于需要各种环境依赖和版本依赖的语言和框架。相对于虚拟机来说启动快,资源占用少,但是Docker的隔离相对较弱

docker docker

如上图所示,容器技术为每个应用省去了 Guest OS 部分,所有应用都运行在 Host OS 中,可以节省大量的资源,启动嗷嗷的快(因为不用启动Guest OS)

基本概念

  • Docker:应用容器引擎,使用容器这种虚拟化方案
  • 仓库(Repository):存放镜像文件的地方,类似于git代码仓库用于存放代码
  • 镜像(Image):是一个只读的模板,可以认为是一个类(Class)
  • 容器(Container):
    • 容器是一种虚拟化方案,Docker就是使用的这种虚拟化方案
    • 还是一个运行环境,如果镜像看作是一个类(Class),那么容器就相当于是某个类创建的对象(Object)

Docker本地安装

开始使用

使用docker只需要一个 docker 命令就行,可怕的是这个命令又有很多子命令。学习其中常用的几个,就可以顺利在本地创建一个容器使用

镜像管理

想要顺利跑起来容器,首先得有能用的镜像

  • 检查安装版本 docker --version 执行该命令如果顺利打印出来Docker的版本,说明安装成功 🎉

    docker --version
    
  • 下载镜像 docker pull 下面这条命令表示下载nginx的1.17.6版本

    docker pull nginx:1.17.6
    

    在哪可以找到都有哪些公共镜像可以用呢? Docker Hub

  • 查看已下载镜像 docker images 可以查看已经下载到本地的镜像们

    docker images
    
  • 删除已下载镜像 docker image rm 可以删除不再使用的镜像来节省点空间(使用中或者被依赖的还是不能删除的)

    docker images rm 231d40e811cd
    
容器管理

有了镜像之后,就可以通过镜像创建容器了

  • 创建容器 docker run 通过下面的命令可以创建出来一个Nginx容器并且后台运行,在浏览器打开 http://127.0.0.1:8080 就可以看到Nginx的默认页面

    docker run -d --name nginx-test -p 8080:80 nginx:1.17.6
    

    -d 表示让这个容器在后台运行 --name nginx-test 表示这个容器的名字叫nginx-test -p 8080:80 表示将容器的80端口映射到宿主机的8080端口(宿主机就是正在运行Docker的你的电脑)

  • 查看运行中容器 docker ps 通过 docker ps 可以查看到当前运行中的容器的创建时间,端口映射等信息

    docker ps
    

    docker container ls 可以实现相同的效果,但是docker container ls -a 可以看到所有的容器,包括已经停止运行的容器

  • 停止/启动/删除容器 docker container stop/start/rmdocker stop/start 一样,这仨命令就可以停止/启动/删除已经存在的容器

    # 停止name=nginx-test的容器
    docker container stop nginx-test
    # 启动name=nginx-test的容器
    docker container start nginx-test
    
  • 进入容器 docker exec 使用 docker exec 可以进入到容器内进行一些操作

    docker exec -it nginx-test /bin/bash
    

    执行后就可以进入到容器内,此后的操作都是容器内的。比如说可以查看nginx的配置 ls /etc/nginx/ 当然如果把命令中的 /bin/bash 换成别的,也可以直接执行其他命令了

  • 文件复制 docker cp 使用 docker cp 可以在容器和宿主机之间相互复制文件

    # 复制宿主机本地的ngin x.conf覆盖容器内的配置
    docker cp ./nginx.conf nginx-test:/etc/nginx/nginx.conf
    

至此,应该已经可以顺利使用docker了,关于如何构建自己的镜像,再说吧 😂

Gavin's Daily

© 2019-2020 Gavin's GoBlog