美文网首页运维相关Docker容器全栈Web开发者
Docker学习笔记(3)——常用命令

Docker学习笔记(3)——常用命令

作者: 无知者云 | 来源:发表于2018-03-08 18:20 被阅读42次

    查看docker 版本

    docker version
    

    查看docker 状态

    docker info
    

    从Docker Hub搜索某个image

    docker search XXX
    

    运行Docker官方的的基础镜像Alpine(取代了busybox):

    docker run alpine
    

    docker 在运行alpine之后就立即退出了,这是因为docker container会随着container中的主进程的退出而退出,即便我们使用了-d参数运行在detatched模式下也是如此。

    启动并进入container:

    docker run -it alpine sh
    

    -it表示在交互方式下运行contianer,并分配一个命令行终端给container,sh表示在container中运行sh为其主进程,这里的sh会替代Dockerfile中的CMD。

    查看正在运行的container

    docker container ls //新方式
    docker ps //老方式
    

    查看所有的contianer(包含正在运行的和已经停止的)

    docker container ls -a //新方式
    docker ps -a //老方式
    

    清理整个docker的无用数据

    docker system prune -a
    

    默认情况下该命令不会清除volume(好主意),如果要同时清除无用的volume:

    docker system prune --volumes
    

    删除所有停止掉的container

    docker container prune 
    

    退出container之后,自动删除container

    docker run --rm alpine
    

    在后台运行container(detatched模式)

    docker -it -d alpine sh
    

    -d表示detatched模式,即不连接cotainer的标准输入输出,而attached模式会连接标准输入输出。需要注意的是,attached模式并不指登录到container中,但是如果container的主进程正式bash之类的命令行,那么attach便会连接到bash本身的输入输出,也即像登录到了container一样,但是此时运行exit会退出整个container。

    登录到运行的container中

    docker exec -it 97aae54c2fac sh
    

    97aae54c2fac表示container的id,也可以使用container的name,此时运行exit不会退出container本身。

    重新运行已停止的container

    docker container start 97aae54c2fac
    

    97aae54c2fac可以用container的id或者name,docker container start会采用所有在首次运行contianer时候的参数,包含volume、环境变量和运行等。另外,在模式情况下,docker contianer start总会在detatched模式下运行contianer。

    网络端口映射

    docker run -p 4000:3000 alpine
    

    将contianer的3000端口映射到宿主机的4000端口。

    文件夹映射

    docker run -v /path-on-host:/path-in-container alpine
    

    指定环境变量

    docker run -e MY_ENV=some_value alpine
    

    删除container

    docker container rm container_id //新方式
    docker rm container_id//老方式
    

    以上命令只删除已经停止的container,如果要强制删除container,可以通过-f参数指定。

    删除image

    docker image rm image_id //新方式
    docker rmi image_id //老方式
    

    指定container的名称

    docker run --name container_name alpine
    

    停止container

    docker stop container_id (or container_name)
    

    列出正在运行的container

    docker container ls //老方式
    docker ps //老方式
    

    link两个container

    docker run -it --link source-container:alias alpine sh
    

    link之后,在contianer的/etc/hosts中会多一条DNS解析到源container的ip,dns名则为alias,另外源contianer中的设置也将作为环境变量出现在所启动的container中。

    查看所有的image

    docker image ls //新方式
    docker images //老方式
    

    删除所有没用到的image

    docker image prune -a
    

    获取image

    从Docker Hub中获取标有latest的官方image:

     docker pull nginx
    

    从Docker Hub 获取指定tag的官方image:

    docker pull nignx:tag1
    

    从Docker Hub中获取某个用户下的image:

    docker pull username/repository:tag
    

    从私有registry中获取image:

    docker pull registry-host:5000/respository:tag
    

    从Dockerfile构建image

    docker build -t repository:tag .
    

    请确保当前目录下存在名为Dockerfile的文件。

    登录到Docker Hub

    docker login
    

    登录到私有Docker Registry

    docker login host:port
    

    上传Image

    上传image到Docker Hub

    docker push username/repository:tag
    

    上传到私有Docker Registry:

    docker push registry-host:5000/username/repository
    

    Image和Container的文件系统

    Docker采用分层的文件系统,即Image中的每一层都是不可变,而Container在Image的基础上,添加了一层可读写的层,并使用Copy-On-Write的方式完成对文件系统的修改, 这样对文件系统的修改将会作为一个新的层添加到既有层之上,而不是直接修改既有的层。

    给image打tag

    1. 通过Image ID打tag:
      docker tag f2a91732366c mynewtag

    2. 通过Image名称打tag:
      docker tag image-name newtag,光是image名称还不能唯一确定一个image,因此此时会默认使用image-name:latest所指向的image。

    3. 通过Image名称和Tag打tag:
      docker tag image-name:tag newname:newtag

    4. 为私有Registry打tag
      docker tag f2a91732366c myregistry:5000/username/repository:tag

    Docker中的tag有些歧义,比如我们在运行docker tag命令的时候,其实可以同时修改Repository的名字和TAG的名字,这里的Repository也即image的名称。

    设置container的工作路径

    docker run -it -w /home alpine sh
    

    使用-w设置container中的工作路径。

    相关文章

      网友评论

        本文标题:Docker学习笔记(3)——常用命令

        本文链接:https://www.haomeiwen.com/subject/bbyffftx.html