目录
1、Docker系统服务命令
- 启动docker: systemctl start docke
- 停止docker: systemctl stop docke
- 重启docker: systemctl restart docke
- 查看docker状态: systemctl status docke
- 开机启动: systemctl enable docker
2、Docker 查看
- 列出本地主机上的镜像
命令:docker images [OPTIONS]
OPTIONS说明:
-a :列出本地所有的镜像(含历史映像层)
-q :只显示镜像ID。
- 线上搜索镜像
docker search [OPTIONS] 镜像名字
例子:docker search mysql
- 查看镜像/容器/数据卷所占的空间
docker system df
- 列出当前所有正在运行的容器
docker ps [OPTIONS]
OPTIONS说明:
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
3、Docker操作
- 删除镜像
启动已停止运行的容器
docker start 容器ID或者容器名
- 重启容器
docker restart 容器ID或者容器名
- 停止容器
docker stop 容器ID或者容器名
- 强制停止容器
docker kill 容器ID或容器名
- 删除已停止的容器
docker rm 容器ID
- 删除多个容器
docker rm -f $(docker ps -a --filter status=exited) #删除所有已停止的容器
- 删除镜像
docker rmi 某个XXX镜像名字ID
- 强制删除
docker rmi -f 镜像ID
- 删除多个镜像
docker rmi -f 镜像名1:TAG 镜像名2:TAG
- 把文件从容器内部复制到主机上
docker cp 容器ID:容器内路径 目的主机路径
例子:docker cp 3065f084c80d:a.txt a.txt
4、新建+启动命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明(常用):
--name="容器新名字" 为容器指定一个名称;
--restart="no"
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
--dns=[]:指定容器的dns服务器
-v:给容器挂载存储卷,挂载到容器的某个目录(: 之前是宿主机文件夹,之后是容器需共享的文件夹)
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:容器重新分配一个伪输入终端,通常与 -i 同时使用;
-m:指定容器的内存上限(-m 4000M或者 -m 4G)
-v:指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹)
-e:指定环境变量,容器中可以使用该环境变量(多个环境变量 -e SERVER_PORT=9080 -e SERVER_ADDRESS=0.0.0.1)
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
-p hostPort:containerPort #端口映射 -p 8080:80,host的8080映射container的80
-p ip:hostPort:containerPort #配置监听地址-p 10.0.0.100:8080:80,指定host ip10.0.0.100,并映射host的8080映射container的80
-p ip::containerPort #随机分配端口-p 10.0.0.100::80,指定host ip 10.0.0.100,并映射host的随机端口映射container的80
-p hostPort:containerPort:udp #指定协议-p 8080:80:ucp,host的8080映射container的80,并限定udp端口
-p 81:80 -p 443:443 #指定多个映射关系
COMMAND说明:在容器启动后,执行的命令。
例如:docker run -it centos /bin/bash #使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
例子:docker run -d --name=ubuntu_server -p 80:80 –m 4G -v /etc/www:/var/www ubuntu:latest ubuntu:latest
一个比较常用的docker run命令的例子
docker run -it -d --rm --name test01 \
-v /Users/Lisen/Documents/docker_volumns:/data \
-p 18010:8000 -p 18011:8001 \
-h test01 \
-m 20m \
--cpus 2 \
ubuntu \
/bin/bash -c "while true;do echo hello world;sleep 1;done"
解释:
以上命令运行后会在后台运行一个ubuntu的容器,容器内会每隔一秒显示helloworld,一直循环。其他参数看下面解释。如果想要直观的看到hello world,就去掉-d选项即可。
-v:卷映射,或--volume:
-p:指定端口映射
--name:容器名称
-i: 以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d:后台运行
–rm:容器退出自动删除容器
其他参数:
docker run bash -c:进行调试,每隔一秒显示hello world。
--cpu 2 : 指定cpu可使用的数量(--cpuset==0 : 指定0号cpu)
-m : 指定容器最大可使用内存
-h: 容器的主机名
5、进入容器内部
使用exec进入容器
例子:docker exec -it 容器ID bashShell
使用attach进入容器
例子:docker attach 容器ID
想要退出容器,并且不想结束当前shell,从当前shell中退出来,可以使用组合键
Ctrl + p + q
两者的区别
attach 直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。
exec 是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止。