继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

慕哥9229398
关注TA
已关注
手记 1099
粉丝 198
获赞 911

查看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中的工作路径。



作者:无知者云
链接:https://www.jianshu.com/p/ac410909e2cf


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP