docker 常用命令
Docker 简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 环境安装
- 安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
- 启动docker:
systemctl start docker
- 停止docker:
systemctl stop docker
- 重启docker:
systemctl restart docker
- docker开机自启动
systemctl enable docker
Docker 镜像常用命令
1. 搜索镜像docker search java
2. 下载镜像docker pull java:8
3. 查找镜像支持的版本由于docker search命令只能查找出是否有该镜像,不能找到该镜像支持的版本,所以我们需要通过docker hub来搜索支持的版本。
进入docker hub的官网,地址:hub.docker.com 搜索需要的镜像,查看镜像支持的版本
4. 列出镜像docker images
5. 删除镜像
- 指定名称删除镜像
docker rmi java:8
- 指定名称删除镜像(强制)
docker rmi -f java:8
- 强制删除所有镜像
docker rmi -f $(docker images)
Docker 容器常用命令
新建并启动容器
docker run -p 80:80 --name nginx -d nginx:1.17.0
- -d选项:表示后台运行
- –name选项:指定运行后容器的名字为nginx,之后可以通过名字来操作容器
- -p选项:指定端口映射,格式为:hostPort:containerPort
容器开机自启动
- 在使用docker run启动容器时,使用–restart参数来设置:
--restart具体参数值详细信息:
no - 容器退出时,不重启容器;
on-failure - 只有在非0状态退出时才从新启动容器;
always - 无论退出状态是如何,都重启容器;
还可以在使用on - failure策略时,指定Docker将尝试重新启动容器的最大次数。默认情况下,Docker将尝试永远重新启动容器。
docker run --restart=on-failure:10 redis
docker run -d -p 5000:5000 --restart=always --name registry2 registry:2
- 如果创建时未指定 --restart=always ,可通过update 命令
docker update --restart=always $ContainerName(或者$ContainerId)
列出容器
- 列出运行中的容器:
docker ps
- 列出所有容器
docker ps -a
停止容器
docker stop $ContainerName(或者$ContainerId)
比如:docker stop nginx
或者docker stop c5f5d5125587
强制停止容器
docker kill $ContainerName(或者$ContainerId)
启动已停止的容器
docker start $ContainerName(或者$ContainerId)
进入容器
- 先查询出容器的pid:
docker inspect --format "{{.State.Pid}}" $ContainerName(或者$ContainerId)
- 根据容器的pid进入容器:
nsenter --target "$pid" --mount --uts --ipc --net --pid
删除容器
- 删除指定容器:
docker rm $ContainerName(或者$ContainerId)
- 强制删除所有容器;
docker rm -f $(docker ps -a -q)
查看容器的日志
docker logs $ContainerName(或者$ContainerId)
查看容器的IP地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' $ContainerName(或者$ContainerId)
同步宿主机时间到容器
docker cp /etc/localtime $ContainerName(或者$ContainerId):/etc/
在宿主机查看docker使用cpu、内存、网络、io情况
- 查看指定容器情况:
docker stats $ContainerName(或者$ContainerId)
- 查看所有容器情况:
docker stats -a
进入Docker容器内部的bash
docker exec -it $ContainerName /bin/bash
修改Docker镜像的存放位置
- 查看Docker镜像的存放位置:
docker info | grep "Docker Root Dir"
- 关闭Docker服务:
systemctl stop docker
- 移动目录到目标路径:
mv /var/lib/docker /mydata/docker
- 建立软连接:
ln -s /mydata/docker /var/lib/docker