docker基础

一、安装docker
centos7阿里extras包也含有了docker地址,配好yum直接安装
https://mirrors.aliyun.com/centos/7/extras/x86_64/

二、配置镜像加速
登陆ali镜像仓库服务
https://cr.console.aliyun.com/
最后一行镜像加速器
我的: https://8boekmka.mirror.aliyuncs.com
配置
sudo mkdir -p /etc/docker 已存在就进入修改这个json文件
cat > /etc/docker/daemon.json <<EOF
{ “registry-mirrors”: [“https://xxxxxxxx.mirror.aliyuncs.com”] }
EOF
sudo systemctl daemon-reload 不用
sudo systemctl restart docker

三、下载镜像
sudo docker pull ubuntu:12.04
如果是其他特定仓库的镜像下载要写明镜像
sudo docker pull registry.hub.docker.com/ubuntu:12.04
默认pull下来的镜像在/var/lib/docker/containers

四、运行容器
sudo docker run -t -i ubuntu:12.04 /bin/bash

五、相关操作
列出本地已有镜像
docker images
[root@localhost opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ubuntu 12.04 5b117edd0b76 2 years ago 104 MB
来自于哪个仓库 标记(版本) 唯一ID号 创建时间 大小
如果不指定具体的标记,则默认使用 latest 标记信息。如 ubuntu:12.04 写成 ubuntu 后 默认会用ubuntun:latest

要删镜像先停容器,再删容器,再删镜像

docker ps 查看正在运行得容器 加 -a查看所有状态得容器
docker stop (container id) 停止运行某容器
docker rm (container id) 删除某容器
docker rmi (image id) 删除某镜像

查找某镜像
docker search ****

修改镜像标签(复制+修改)
docker tag 5db5f8471261 ouruser/sinatra:devel

将镜像保存到本地
docker save -o ubuntu_14.04.tar ubuntu:14.04
docker save -o bendicentos_8.tar my/centos8:0.01

将本地镜像文件导入本地镜像库
docker load --input ubuntu_14.04.tar
docker load < ubuntu_14.04.tar

六、修改容器为制作新镜像
进入正在运行的容器
docker exec -it 容器id /bin/bash

运行并进入容器
docker run -t -i docker.io/centos /bin/bash
[root@b3b2b4032a06 etc] 容器ID为 b3b2b4032a06
在容器中安装nginx
退出后使用commit提交另存为新镜像
docker commit -m “add rsync nginx” -a “kkk” b3b2b4032a06 my/centos8:0.01
提交说明 指定跟新的用户 需要提交更改的容器ID 指定新镜像的仓库名和 tag 信息
可再用docker images 查看

七、使用Dockerfile创建新镜像
例如

This is a comment

FROM ubuntu:14.04
MAINTAINER Docker Newbee newbee@docker.com
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra

put my local web site in myApp folder to /var/www

ADD myApp /var/www

expose httpd port

EXPOSE 80

the command to run

CMD ["/usr/sbin/apachectl", “-D”, “FOREGROUND”]

使用 # 来注释
FROM 指令告诉 Docker 使用哪个镜像作为基础
接着是维护者的信息
RUN 开头的指令会在创建中运行,比如安装一个软件包
利用 ADD 命令复制本地文件到镜像;
用 EXPOSE 命令来向外部开放端口;
用 CMD 命令来运行容器启动后运行的程序

docker build -t=“ouruser/sinatra:v2” .

其中 -t 标记来添加 tag,指定新的镜像的仓库信息。“.” 是 Dockerfile 所在的路径(当前目录),也可以
替换为一个具体的 Dockerfile 的路径。

Dockfile 中的指令被一条一条的执行。每一步都创建了一个新的容器,在
容器中执行指令并提交修改(就跟之前介绍过的 docker commit 一样)。当所有的指令都执行完毕之
后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被删除和清理了。
*注意一个镜像不能超过 127 层

docker可以支持把一个宿主机上的目录挂载到镜像里。

docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为容器内挂载的路径。
现在镜像内就可以共享宿主机里的文件了。

默认挂载的路径权限为读写。如果指定为只读可以用:ro
docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu64 /bin/bash

docker还提供了一种高级的用法。叫数据卷。
数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。
看示例:
docker run -v /home/dock/Downloads:/usr/Downloads --name dataVol ubuntu64 /bin/bash
创建一个普通的容器。用–name给他指定了一个名(不指定的话会生成一个随机的名子)。

再创建一个新的容器,来使用这个数据卷。
docker run -it --volumes-from dataVol ubuntu64 /bin/bash --volumes-from用来指定要从哪个数据卷来挂载数据。

docker ps -a --no-trunc 显示详细内容

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页