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