一、docker安装
注:docker架构
镜像:相当于类,是一个最小root系统文件
docker –version Docker version 18.09.0
1.进入docker 目录
root@Rightsec:~# cd /var/lib/docker root@Rightsec:/var/lib/docker# ls builder buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes
2.进入containers,每个序列号都是一个image
root@Rightsec:/var/lib/docker# cd containers/ root@Rightsec:/var/lib/docker/containers# ls e36d800f663b626aef2c625c48c353555d9b203e13e7e49093d15be2f3a0fb6e
3.进入镜像可以看到
root@Rightsec:/var/lib/docker/containers# cd e36d800f663b626aef2c625c48c353555d9b203e13e7e49093d15be2f3a0fb6e/ root@Rightsec:/var/lib/docker/containers/e36d800f663b626aef2c625c48c353555d9b203e13e7e49093d15be2f3a0fb6e# ls checkpoints hostconfig.json mounts config.v2.json hostname resolv.conf e36d800f663b626aef2c625c48c353555d9b203e13e7e49093d15be2f3a0fb6e-json.log hosts resolv.conf.hash
4.进入image文件夹,里面有repositories.json的文件,详细记录了各镜像的一些信息:
root@Rightsec:/var/lib/docker# cd image/ root@Rightsec:/var/lib/docker/image# ls overlay2 root@Rightsec:/var/lib/docker/image# cd overlay2/ root@Rightsec:/var/lib/docker/image/overlay2# ls distribution imagedb layerdb repositories.json
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
仓库配置:
修改配置文件 vi /etc/docker/daemon.json
添加内容:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
systemctl daemon-reload
systemctl restart docker.service
1.cento7/cento8及以上安装docker,安装方式
(1)官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
(2)手动安装
1.卸载旧版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
2.安装Docker Engine-Community
a.使用docker仓库安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker
设置仓库:
yum install -y yum-utils device-mapper-persistent-data lvm2
官网源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
阿里云:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清华:
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
b.安装Docker Engine-Community
安装最新版本:
yum install docker-ce docker-ce-cli containerd.io(若问是否接受GPG,选是)
Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户
安装指定版本:(在存储库里列出可用版本再选择安装)
yum list docker-ce --showduplicates | sort -r//列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序
安装列出的指定版本:
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
c.启动Docker
systemctl start docker
d.加入开机自动启动:
systemctl enable docker
e.验证是否启动成功
二、docker使用
(1)简单应用
a. Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。
docker run ubuntu:15.10 /bin/echo "Hello world"
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果
b. 运行交互容器:通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:
docker run -i -t ubuntu:15.10 /bin/bash //会进入ubuntu的系统容器里,可通过exit退出
c.启动容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" //会出现一个容器
d.查看运行多少个docker
docker ps
e. 查看对应容器id的日志
docker logs 2b1b7a428627(容器id)
f. 停止对应docker
docker stop 2b1b7a428627(容器id)
g.启动已停止的docker
docker start 2b1b7a428627(容器id)
h. 登录镜像仓库下载镜像
docker login registry-shdocker-registry.cn-shanghai.cr.aliyuncs.com/dandelion/dandelion_unview:v1.0.0_20201226 -u 用户名 -p 密码
其中: registry-shdocker-registry.cn-shanghai.cr.aliyuncs.com/dandelion/dandelion_unview:v1.0.0_20201226是仓库位置,dandelion是镜像删除镜像
docker rm -f dandelion删除镜像,这里用是tuya自己的远程仓库,登录后docker相当于客户端,若不指明也默认登录官网的
i.查看本地安装哪些镜像:
docker images
结果:
REPOSITORY TAG IMAGE ID CREATED SIZE
registry-shdocker-registry.cn-shanghai.cr.aliyuncs.com/dandelion/dandelion_unview v1.0.0_20201226 0305d9a0f892 3 months ago 141MB
TAG:可看到安装的版本
j.查看镜像可用版本
docker search nginx(镜像名)
k. 登录官网公共仓库:
docker login//默认登录官网仓库后会提示输入用户名密码
docker search //查看公共仓库有哪些镜像
docker logout//退出仓库
(2)docker常见使用命令
a.如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像
docker pull ubuntu
b.启动容器
docker run -it ubuntu /bin/bash//通exit退出后docker就停止
c.在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。在使用 -d 参数时,
容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入
docker run -itd --name ubuntu-test ubuntu /bin/bash //加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec
docker exec -it 243c32535da7 /bin/bash //进入ubuntu页面
d.导入导出容器
导出本地容器:docker export 1e560fca3906 > ubuntu.tar
导入容器快照:cat docker/ubuntu.tar | docker import - test/ubuntu:v1(名字)//这种方式导入导出会报错“Error response from daemon: No command specified”,需要带command
如下方式导入导出不需要command
导出本地容器:将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档,runoob/ubuntu:v3导出本地docker images查出来的镜像,-o name,表导出名字
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
导入容器:
--input:指定导入文件
--quiet:输出信息
docker load < my_ubuntu_v3.tar
e.删除容器: docker rm -f 1e560fca3906
f .删除本地一个或多个镜像
docker rmi -f name:version
三、其它
1.https://www.runoob.com/docker/docker-inspect-command.html
2.docker 的镜像与容器都存储在 /var/lib/docker 下面,那么基于不同的系统又有不同的存储方式,在 ubuntu 下面存储方式为 AUFS;在 Centos 下面存储方式又是 device mapper