Docker操作
# 常看docker版本
docker -v
# 启动docker
systemctl start docker
# 查看docker状态
systemctl status docker
# 关闭docker
systemctl stop docker
容器操作
容器创建(docker run)
语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
创建并启动一个rabbitmq容器:
docker run -d -p 5672:5672 -p 15672:15672 --name=c_rabbitmq rabbitmq
容器其他操作
# 查看所有正在运行容器
docker ps
# 查看所有容器(-a 查询所有)
docker ps -a
# 上面信息太多,太乱,可以通过以下命令。简化显示
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"
# 查看所有容器ID(-q 查询ID)
docker ps -a -q
# 启动容器,containerId 是容器的ID
docker start containerId
# 停止运行容器
docker stop containerId
# remove容器
docker rm containerId
# start启动所有停止的容器
docker start $(docker ps -a -q)
# stop停止所有容器
docker stop $(docker ps -a -q)
# remove删除所有容器
docker rm $(docker ps -a -q)
# 命令重命名。简化常用复杂命令的输入
# vi ~/.bashrc,添加以下命令。保存后 source ~/.bashrc
# 查看所有容器状态,信息简化
alias docker-ps='docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"'
# 启动所有停止的容器
alias docker-start-all='docker start $(docker ps -a -q)'
# 停止所有运行的容器
alias docker-stop-all='docker stop $(docker ps -a -q)'
镜像操作
# 拉取镜像(docker pull NAME:TAG),TAG可以省略,默认为latest,最新版本
docker pull rabbitmq:management
# 查看所有镜像
docker images
# 镜像导出( > 可换成 -o )
docker save > /tmp/test_image.tar.gz
# 镜像导入( < 可换成 -i )
docker load < /tmp/test_image.tar.gz
# 镜像删除
docker rmi imageId