总的来说分为以下几种:
docker [run|start|stop|restart|kill|rm|pause|unpause] #容器生命周期管理
docker [ps|inspect|top|attach|events|logs|wait|export|port] #容器操作运维
docker [commit|cp|diff] #容器rootfs命令
docker [login|pull|push|search] #镜像仓库
docker [images|rmi|tag|build|history|save|import] #本地镜像管理
1、镜像
搜索镜像:
docker search 镜像名称
拉取镜像:
docker pull image_name
docker pull image_name:tag
#image_name:表示镜像的仓库源名称,TAG:镜像的标签 如果不指定tag 那么默认用最新的
删除镜像:
docker rmi 镜像名称/镜像ID
docker rmi -f 镜像名称/镜像ID
#强制删除 如果镜像有容器在运行 那么就需要强制删除 增加 -f 参数
2、容器命令
docker run #首先会从本地找镜像,如果有则直接启动,没有的话,从镜像仓库拉起,再启动)
docker run -d --name "rabbitmq-test" -p 5672:5672 -p 15672:15672 rabbitmq:management
#-d 后台运行
#-p 端口映射 (可以有多个 因为该镜像可能存在多个端口)
#rabbitmq:management (格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的
#--name 给该容器取个名字
查看当前允许的容器
docker ps
检查容器内部信息
docker inspect 容器名称
停止/启动/移除某个容器
docker stop 容器名称
docker start 容器名称
docker rm 容器名称 #容器必须是停止状态,若强制删除使用 -f 参数
创建容器常用选项:
容器资源限制:
示例:
内存限额:
#允许容器做多使用500M内存和100M的swap,同时禁用OOM KILLER
docker run -d --name nginx-test --memory="500m" --memory-swap=“600m" --oom-kill-disable nginx
CPU限额:
#允许容器最多使用两个半多CPU
docker run -d --name nginx-test --cpus="2.5" nginx
#允许容器最多使用50%的CPU:
docker run -d --name nginx-test --cpus=".5" nginx
持久化卷相关:
docker有三种方式将数据从宿主机挂载到容器中:
(1)volume: docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。
(2)bind mount: 将宿主机上任意的文件活着目录挂在到容器中。
(3)tmpfs: 挂载存储在主机系统的内存中,而不会写入主机的文件系统。若不希望将数据持久化到任意到一个地方,可以使用该方式,同时避免了写入容器可写层提高了性能。
(1)volume
管理卷:
docker volume create nginxVol #创建
docker volume ls #查找当前到volume
docker volume inspect nginxVol #查看nginxVol信息
用卷创建一个容器:
docker run -d --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
#或者使用下面到写法
docker run -d --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx
清理:
docker stop nginx-test
docker rm nginx-test
docker volume rm nginx-vol
PS: 若没有指定卷,则会自动创建
volume特点:
多个运行容器之间共享数据,多个容器可以同时挂载相同的卷
当容器停止或者移除时,该卷扔存在;当明确删除卷时,卷才会被删除 (docker volume rm 卷名称)
将容器当数据存储在远程主机或其他存储上
将数据从一台docker主机迁移到令一台时,先停止容器,然后备份卷到目录(/var/lib/docker/volumes/)
(2)bind mount
用卷创建一个容器:
docker run -d --name=nginx-test --mount type=bind,src=/app/bindTest,dst=/usr/share/nginx/html nginx
#或者使用下面到方式
docker run -d --name=nginx-test -v /app/bindTest:/usr/share/nginx/html nginx
PS: 若源文件/目录不存在,则不会自动创建,会抛出一个错误。另外若挂载目标在容器中为非空目录,则该目录现有内容将被因此,但是上面(1)volume在这种情况下会直接覆盖。
bind mount特点:
从主机共享配置文件到容器。末日情况下,挂载主机/etc/resolv.conf到每个容器,提供DNS解析。
在docker主机上到开发环境和容器之间共享源代码,比如:可以将Maven target目录挂载到容器中,每次在docker主机上构建Maven项目时,容器可以访问构建到项目包。