Docker容器超详细讲解(2)

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容器超详细讲解

根据需求拉取镜像:

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 

Docker容器超详细讲解

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)启动之后,我们会获取到一个命令提示符:

Docker容器超详细讲解

在容器内我们安装MySQL并设置开机自启动,将修改后的镜像提交:

docker ps -l 查询容器ID
docker commit -m "功能" -a "用户信息" ID tag 提交修改后的镜像 

Docker容器超详细讲解

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容器超详细讲解

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)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12605.html