安装完docker环境之后就是使用docker了,我学习一般喜欢先“知其然”,就是学会用这个东西,然后再“知其所以然”,了解这个技术背后的架构和原理,而使用docker首先就要弄明白image和container。
1. Image是文件和Metadata的集合(root filesystem)
2. Image是分层的,并且每一层都可以通过添加或改变删除文件成为一个新的Image
3. 不同的Image可以共享相同的layer
4. Image是只读的
如图所示,我们在使用的时候一般会在基础镜像(base image)的基础上去拓展,形成各种各样适合不同使用场景的docker image。
1.从Dockerfile文件中构建(Build from Dockerfile)
通过编写Dockerfile文件(下一篇会详细说明),执行命令格式:
docker build [OPTIONS] PATH | URL | -
如:
docker build -t xxx/myimage.
其中xxx/myimage表明我们创建的image名,后面的点表示执行当前目录下的Dockerfile文件。其他参数可以参考:菜鸟教程
2.从仓库中拉取(Pull from Registry)
命令格式为:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
如:
docker pull xxx
在pull的时候后面可以带上不同的版本(tags),不加版本默认最新的版本。
3.Container的commit可以得到新的Image(Create a new image from a container’s changes)
关于Container,在后文有说明。
命令格式:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS参数说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停
如:
docker commit -a "starlh35" -m "My First Commit" a404c6c174a2 myimage:v1.0
1.列出当前所有的image
docker images # 或者docker image ls
2.列出当前所有的container
docker container ls # 或者docker ps
添加-a参数可以查看运行后退出的容器
docker container ls -a # 或者docker ps -a
3.运行/停止一个容器
命令格式:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
如:
docker run --name mycontainer -d myimage:latest
该命令以myimage为名称后台运行一个容器,其他参数可以参考菜鸟教程。
以后运行我们可以直接使用:
docker start [name或containerid]
同理停止可以使用:
docker stop [name或containerid]
4.删除image和contanier
image上面已经介绍过,它相当于一个container启动的模板,而container则是image运行时的的状态。docker对于运行过的image都保留一个状态(container),可以使用命令docker ps
来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a
来查看。
所以想要删除运行过的image必须首先删除它的container
docker rm [contanier id] # 删除contanier
docker rmi [image id] # 删除image
在使用过程中我们往往回运行许多容器,手动一条一条删除的话很麻烦,我们可以借助如下命令删除所有容器:
docker rm $(docker container ls -aq) # 删除所有的container
docker rm $(docker container ls -f "status-exited" -q) # 删除所有已经退出执行的container)
5.Image的发布
上述我们所创建的image可以理解为都是本地image,我们可以通过push
命令将我们的镜像传到Docker Hub
公共仓库上供大家使用。
首先需要执行docker login
登录,输入账户密码(没有的需要去docker官网注册)
docker login
输入账号密码后就可以提交我们的image了
docker push xxx/myimage:latest
提交后可以通过 docker pull
命令随时拉取
6.对运行中的容器操作
对于已经运行的容器我们常用的操作有:
docker exec -it [containerid] /bin/bash # 进入一个运行中的容器内部
docker exec -it [containerid] ip a # 查看容器 ip
docker logs [containerid] # 查看容器运行产生的日志
docker inspect containerid # 查看容器状态参数
7.限制容器使用的资源
在运行容器的时候我们可以通过参数调整容器运行时的内存容量,cpu占用率
docker run --memory=200M xxx/myimage # 限定容器使用内存
docker run --cpu-shares=10 xxx/xxx # 设置该容器的占用cpu的相对权重