一、安装教程
1、ubuntu 软件源更新
sudo apt-get update
sudo apt-get upgrade
2、一键安装docker
# 一键安装命令
curl -sSL https://get.docker.com | sh
# 查看安装的docker版本
docker version
docker -v
# 配置开机启动
sudo systemctl enable docker
# 其他命令
sudo systemctl 【start 启动、stop 停止、restart 重启】 docker
3、docker配置国内镜像源
# 进入
sudo mkdir -p /etc/docker
# 创建 daemon.json
touch daemon.json
# 编辑 daemon.json 输入
{
"registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"],
"dns": [
"8.8.8.8",
"8.8.4.4"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
}
}
# 载入配置项
sudo systemctl daemon-reload
sudo systemctl restart docker
# 查看docker 信息
docker info
国内docker加速镜像地址
- 科大镜像:https://docker.mirrors.ustc.edu.cn/
- 网易:https://hub-mirror.c.163.com/
- 阿里云:https://<你的ID>.mirror.aliyuncs.com
- 七牛云加速器:https://reg-mirror.qiniu.com
4、离线安装教程
## 离线安装
1、解压:
tar -zxvf docker-20.10.8.tgz
2、授权为可执行文件
chmod -R 777 docker
3、将docker文件夹复制到 /usr/bin 目录下
cp docker/* /usr/bin/
4、查看版本
sudo docker -v
## 开机自启动docker
sudo systemctl enable docker
若是报错:Authentication is required to manage system service or unit files.或 Failed to enable unit: Unit file docker.service does not exist.
配置这个:
创建docker.service文件(将docker注册为service)
sudo vim /etc/systemd/system/docker.service
### 编辑 docker.service文件
```
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
```
1、添加文件权限并启动docker
sudo chmod +x /etc/systemd/system/docker.service
2、重载unit配置文件
sudo systemctl daemon-reload
3、设置开机自启Docker服务
sudo systemctl enable docker.service
4、执行开机自启docker
sudo systemctl enable docker
5、启动Docker
sudo systemctl start docker
## 验证docker
systemctl status docker ## docker有两种状态:active和inactive
docker -v
sudo docker info
二、运行命令
1、docker的版本与镜像查看
1、查看dockers版本
docker version
docker -v
2、要是有问题重启docker,任意执行下方两条中一个命令
1) service docker restart
2) systemctl restart docker.service
3、查看docker中的镜像
docker images
4、查看可以下载的镜像,以redis为例
docker search redis
5、下载需要的镜像,
docker pull [imge name]
6、设置镜像的name和tag
docker tag [IMAGE ID ] [name]:[tag]
docker tag [IMAGE ID ] java:abc8
7、查看镜像下载后的结果
docker images
8、删除镜像,通过id删除
docker rmi [IMAGE ID ]
9、开机启动
systemctl enable docker
10、开机禁用
systemctl disable docker
11、查看状态
systemctl status docker
2、对docker中容器的初步了解
1、查看运行中的容器
docker ps
2、查看所有容器
docker ps -a
3、创建一个随意redis的容器,
docker run -d redis:latest redis-server
4、运行容器
docker start [ CONTAINER ID ]
5、停止容器运行
docker stop [ CONTAINER ID ]
强行关闭容器
docker kill [ CONTAINER ID ]
6、删除容器
docker rm [ CONTAINER ID ]
7、查看该容器运行情况,这步需要将容器启动后才行
docker exec -ti [ CONTAINER ID ] redis-cli
docker exec -it [ CONTAINER ID ] bash
docker exec -it [ CONTAINER ID ] /bin/bash
8、查看docker运行日志
docker logs [ CONTAINER ID ]
9、容器的具体信息查看
docker inspect [ CONTAINER ID ]
10、所有运行容器的实时运行情况
docker stats
3、镜像离线导出导入
1)导出:
docker save [image id] > xxxx.tar
2、导入:
docker load < xxxx.tar
3、标记镜像的名称和标签。有些镜像导入后其【repostory】【tag】可能是 <none>,这时需要我们自定义这两个值
docker tag [image id] [自定义repository]:[自定义tag]
三、操作过程中遇到的异常
参看我的" Linux学习笔记(四) "的内容。
四、容器服务自启动配置
分成两个步骤:1、设置docker开机启动、2、配置容器服务跟随启动
1.docker自动启动设置:
systemctl enable docker.service
2、docker容器自动启动设置
在创建docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
docker run --restart=always
如果已经启动了则可以使用如下命令:
docker update --restart=always CONTAINER_ID
--restart=always # 表示容器退出时,docker会总是自动重启这个容器
--restart=on-failure:3 # 表示容器的退出状态码非0(非正常退出),自动重启容器,3是自动重启的次数。超过3此则不重启
--restart=no # 默认值,容器退出时,docker不自动重启容器
--restart=unless-stopped # 表示容器退出时总是重启,但是不考虑docker守护进程运行时就已经停止的容器
五、容器内存查看与缓存清理
# 查看占用内存
docker system df
# 清除所有不使用的资源,这个命令将会删除所有不使用的镜像、容器和数据卷等资源。
docker system prune
docker system prune -f
# 清除所有未被标记的镜像(没有运行容器的镜像)
docker image prune
docker image prune -a
# 清除所有未被使用的数据卷
docker volume prune
# 清除所有未被使用的网络
docker network prune
# 删除未被使用的容器
docker container prune
# 删除所有悬空的容器
docker container prune --filter status=exited