docker 的一些基础概念

docker command
systemctl start docker
systemctl restart docker
systemctl enable docker
配置加速镜像
添加配置
vi /etc/docker/daemmon.json
{
"registry-mirrors":[
"http://hub-mirror.c.163.com"
]
}
加载配置
systemctl daemon-reload
重启docker
systemctl restart docker

docker ps -a 查看所有容器进程
docker rm xxxxxxxx 移除容器xxxxxxxx
docker rmi hello-world 移除hello-world镜像

docker 镜像相关的命令 docker pull --help
从docker 仓库获取镜像 docker pull [选项]

docker image ls 列出所有下载过的镜像(docker images)
[root@pikzas docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 065cf14a189c 4 weeks ago 135MB
hello-world latest d1165f221234 4 months ago 13.3kB
ubuntu 096efd74bb89 9 months ago 127MB

[root@pikzas docker]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 1 262.3MB 262.3MB (99%)
Containers 1 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B

查看镜像 容器 数据卷所占用空间
doceker system df
[root@pikzas docker]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 1 262.3MB 262.3MB (99%)
Containers 1 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B

仓库名 和标签都为none的镜像为虚悬镜像
docker image ls -f dangling=true
[root@pikzas pikzas]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
f0b57b1e7fd9 22 seconds ago 135MB
ubuntu 16.04 065cf14a189c 4 weeks ago 135MB
hello-world latest d1165f221234 4 months ago 13.3kB
ubuntu 096efd74bb89 9 months ago 127MB

虚悬镜像是可以直接删除的
可以用命令 docker image prune来删除掉所有的虚悬镜像

删除本地镜像
docker rmi [选项] <镜像1> <镜像2>
<镜像> 可以是短ID 长ID 镜像名 或者是镜像摘要

镜像查询用 docker image ls -q
[root@pikzas pikzas]# docker image ls -q hello-world
d1165f221234

于是批量删除可以结合以上两个命令
docker image rm $(docker image ls -q xxx -f before=xxx:1.0) 删除所有xxx:1.0之前的所有镜像

docker 容器的操作
新建并启动 或者启动停止的机器
docker run
docker start
[root@pikzas ~]# docker run -it ubuntu:16.04 bash
root@4e2a8f71de37:/#

通过添加-d 参数来开启后台运行
[root@pikzas ~]# docker run -d hello-world
c11e78317c1f34b13d1c441a6998980ddce3be23b2b090ed3968ea4fefb5696f

docker logs 查看后台运行的容器日志
[root@pikzas ~]# docker logs c11e78317c1f34b13d1c441a6998980ddce3be23b2b090ed3968ea4fefb5696f

Hello from Docker!
This message shows that your installation appears to be working correctly.

docker container stop 停止一个容器
docker container ls -a 列出所有停止运行的容器
docker container start 启动一个容器
docker container restart 重新启动一个
docker exec 进去运行中的容器

[root@pikzas ~]# docker exec -it 95d86d0cd867 bash
root@95d86d0cd867:/# ll
total 20
drwxr-xr-x 21 root root 4096 Jul 19 01:30 ./
drwxr-xr-x 21 root root 4096 Jul 19 01:30 ../
-rwxr-xr-x 1 root root 0 Jul 19 01:30 .dockerenv*
drwxr-xr-x 2 root root 4096 Jun 11 23:09 bin/
drwxr-xr-x 2 root root 6 Apr 12 2016 boot/
drwxr-xr-x 5 root root 360 Jul 19 01:32 dev/

docker export > x.zip 将指定的容器导出到x.zip 为一个快照
docker import 导入快照为本地镜像
cat x.zip | docker import - 镜像用户/镜像名称:镜像版本
同样可以通过url 或者目录来导入
docker import http://study.163.com/image.tgz example/imagerepo

删除容器(只有终止状态的容易可以被删除,运行状态的不可删除)
docker container rm ubuntu:16.04
强行要删除运行状态的容器 需要添加-f 强制停止容器

删除所有停止状态的容器
docker container prune
[root@pikzas ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e2a8f71de37 ubuntu:16.04 "bash" 2 hours ago Exited (127) About an hour ago focused_pasteur
971fde08741d hello-world "/hello" 12 hours ago Exited (0) 12 hours ago nostalgic_brahmagupta
[root@pikzas ~]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
^[[ADeleted Containers:
4e2a8f71de372dcdc8cde4c86eca83c673228b8fe9bd0b07c34e5a32d4cc0b1b
971fde08741dff0af5760d73f127eb8ad4c7fb9a97aac1220f45e22425d54c1c

Total reclaimed space: 28B
[root@pikzas ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@pikzas ~]#

dockfile 定制镜像

  • 就是指定容器每一层需要的配置 然后以配置文件的形式指定具体的细节
    FROM 命令
    RUN 命令
    COPY 命令
    ADD 命令
    CMD 命令
    ENV 命令 设置环境变量
    ARG 命令
    VOLUMN 命令 VOLUMN <路径> docker 不推荐直接在容器内部写文件数据
    EXPOSE <端口> 声明映射的端口
    WORKDIR <工作路径> 指定当前工作的路径
    ONBUILD
    docker save

docker hub 搭建私有仓库
docker-registry
curl 127.0.0.1:5000/v2/_catalog查看本地安装的docker 内有哪些镜像

Dockerfile 默认就是该文件为配置
docker build -t myimage:1.0 .
构建当前目录下的Dockerfile 为一个新的镜像并命名为myimage版本为1.0

DOCKER 创建数据卷
docker三种写入数据的方式
数据卷 挂载主机目录 内存

创建数据卷
docker volumn create my-volumn
docker volumn ls
docker volumn inspect my-volumn

docker run 使用--mount

docker run --name session-web -d -p 8888:8080 --mount type=bind,source=/src/webapp,target=/opt/webapp session-web:latest

删除数据卷
docker volumn rm test
一般情况下删除容器不会删除这些容器所使用的数据卷
但是还是可以通过docker rm -v 再删除容器的同时候 一起删除掉所使用的数据卷

docker volume prune 可以删除无容器引用的数据卷

docker compose的使用

docker 的监控工具
类似于ELK 可以用CAdvisor + InfluxDB + Grafana
Grafana UI展示界面
InfluxDB 开源的时序化存储的DB 用来存储docker 运行的监控数据
CAdvisor 收集容器运行时的数据

部署InfluxDB 服务
docker run -d --name influxdb -p 8086:8086 -v /data/influxdb:/var/lib/influxdb --hostname=influxdb influxdb

访问管理的客户端
http://ip:8083

docker exec -it influxdb influx

CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

部署CAdvisor 服务
部署Granfana 服务
docker run -d -p 3000:3000 -v /data/grafana:/var/lib/grafana --link=influxdb:influxdb --name grafana grafana/grafana

posted @ 2021-07-25 17:04  pikzas  阅读(41)  评论(0编辑  收藏  举报