curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s
脚本是写入
echo "{\"registry-mirrors\": [\"http://d6f11267.m.daocloud.io\"]}"> /etc/docker/daemon.json
systemctl restart docker #重启失效
根据需求拉取镜像:
docker pull docker.io/ansible/centos7-ansible
拉去search到的全部镜像:
for i in `docker search centos|awk '!/NAME/{print $2}'`;do docker pull $i;done
查看本地镜像:
docker images
2.4 命令整理:
容器操作:
docker create # 创建一个容器但是不启动它
docker run # 创建并启动一个容器
docker stop # 停止容器运行,发送信号SIGTERM
docker start # 启动一个停止状态的容器
docker restart # 重启一个容器
docker rm # 删除一个容器
docker kill # 发送信号给容器,默认SIGKILL
docker attach # 连接(进入)到一个正在运行的容器
docker wait # 阻塞一个容器,直到容器停止运行
获取容器信息:
docker ps # 显示状态为运行(Up)的容器
docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited)
docker inspect # 深入容器内部获取容器所有信息
docker logs # 查看容器的日志(stdout/stderr)
docker events # 得到docker服务器的实时的事件
docker port # 显示容器的端口映射
docker top # 显示容器的进程信息
docker diff # 显示容器文件系统的前后变化
导出容器:
docker cp # 从容器里向外拷贝文件或目录
docker export # 将容器整个文件系统导出为一个tar包,不带layers、tag等信息
执行:
docker exec # 在容器里执行一个命令,可以执行bash进入交互式
镜像操作:
docker images # 显示本地所有的镜像列表
docker import # 从一个tar包创建一个镜像,往往和export结合使用
docker build # 使用Dockerfile创建镜像(推荐)
docker commit # 从容器创建镜像
docker rmi # 删除一个镜像
docker load # 从一个tar包创建一个镜像,和save配合使用
docker save # 将一个镜像保存为一个tar包,带layers和tag信息
docker history # 显示生成一个镜像的历史命令
docker tag # 为镜像起一个别名
镜像仓库(registry)操作:
docker login # 登录到一个registry
docker search # 从registry仓库搜索镜像
docker pull # 从仓库下载镜像到本地
docker push # 将一个镜像push到registry仓库中
2.5 简单实践操作
运行并进入容器操作:
docker run -i -t docker.io/1832990/centos6.5 /bin/bash
-t 表示在新容器内指定一个伪终端或终端;
-i表示允许我们对容器内的 (STDIN) 进行交互;
-d表示将容器在后台运行;
/bin/bash 。这将在容器内启动 bash shell;
所以当容器(container)启动之后,我们会获取到一个命令提示符:
在容器内我们安装MySQL并设置开机自启动,将修改后的镜像提交:
docker ps -l 查询容器ID
docker commit -m "功能" -a "用户信息" ID tag 提交修改后的镜像
docker inspect ID 查看详细信息
docker push ID 上传docker镜像
利用DockerFile创建镜像
使用命令 docker build , 需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建镜像。
mkdir DockerFile
cd DockerFile
cat > Dockerfile <<EOF
FROM 603dd3515fcc
MAINTAINER Docker xuel
RUN yum install mysql mysql-server -y
RUN mddir /etc/sysconfig/network
RUN /etc/init.d/mysqld start
EOF
docker build -t "centos6.8:mysqld" .
-t 制定repository 与tag
. 指定Dockerfile的路径
注意一个镜像不能超过 127 层
此外,还可以利用 ADD 命令复制本地文件到镜像;
用 EXPOSE 命令来向外部开放端口;
用 CMD 命令来描述容器启动后运行的程序等。
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
2.6 Dockerfile详解
Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为注释,每一行只支持一条指令,每条指令可以携带多个参数。
Dockerfile的指令根据作用可以分为两种,构建指令和设置指令。
构建指令:用于构建image,其指定的操作不会在运行image的容器上执行;
设置指令:用于设置image的属性,其指定的操作将在运行image的容器中执行。
FROM(指定基础image)