🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## **命令表格** ***** | docker命令 | 用途 | | --- | --- | | docker pull | 获取images | | docker build | 创建images | | docker images | 列出images | | docker run | 运行container | | docker ps | 列出container | | docker rm | 删除container | | docker rmi | 删除images | | docker cp | 在host和container之间拷贝文件 | | docker commit | 保存改动为新的image| 创建一个容器示例 ``` docker run -p 8080::80 -d `images` 名字 ``` **通过`commit` 可以创建也给新的`image`** **通过dockerfiel创建新的images** | dockerfile命令 | 用途 | | --- | --- | | FROM | base image | | RUN | 执行命令 | | ADD | 添加文件| | COPY| 复制文件| | CMD | 执行命令 | | EXPOSE| 暴露端口 | | WORKDIR| 指定路径| | MAINTAINER| 维护者 | | ENV| 设定环境变量 | | ENTRYPOINT| 容器入口 | | USER| 指定用户 | | VOLUME| mount point| Dockerfile示例 ``` FROM alpine:latest MAINTAINER xbf CMD echo 'hello docker' ``` 思考 ``` 怎么在容器中搭建环境 怎么把容器生成一个新的images 镜像是只读的 容器是动态的 镜像运行生成容器 容器可以转化为只读的镜像. ``` ## **创建镜像有两种办法** ***** ### **方法一:commit容器** 所以先用`exit`命令退出容器,再运行`docker commit`命令: ``` $ sudo docker commit 614122c0aabb aoct/apache2 ``` 也可以像git一样,在提交镜像时指定更多信息来描述所做的修改: ``` $ sudo docker commit -m='A new image' --author='Aomine' 614122c0aabb aoct/apache2 ``` 上面代码,用`-m`指定行创建的镜像的提交信息。`--author`指定镜像作者,接着是容器ID、目标镜像仓库、镜像名。 ` ` 使用`docker inspect`命令查看新创建的镜像的详细信息: ``` $ sudo docker inspect aoct/apache2 ``` 使用`docker run`命令从刚创建的新镜像运行一个容器: ``` $ sudo docker run -t -i aoct/apache2 /bin/bash ``` ### **方法二:使用 docker build 和 dockerfile文件创建镜像** `Dockerfile` 示例 ``` From ubuntu MAINTAINER idzqj RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list RUN apt-get update RUN apt-get -y install nginx COPY index.html /var/www/html ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"] EXPOSE 80 ``` 在Dockerfile同级目录下执行命令: ``` docker build -t idzqj/hello-nginx . docker run -d -p 80:80 idzqj/hello-nginx -d的意思是守护进程 ``` ***** ## **推送images** ***** `tag`修改镜像名称,推送镜像的规范是: ``` $ docker push 注册用户名/镜像名 ``` tag命令修改为规范的镜像: (存储库的名字 `boonyadocker/tomcat-allow-remote`) ``` old name:boonya/tomcat-allow-remote new name:boonyadocker/tomcat-allow-remote $ docker tag boonya/tomcat-allow-remote boonyadocker/tomcat-allow-remote ``` 通过`push`命令推送镜像: ``` $ docker push boonyadocker/tomcat-allow-remote:latest ``` ***** ## **问题** ***** ### **docker 拉取不了镜像** [https://www.cnblogs.com/sxdcgaq8080/p/11059976.html](https://www.cnblogs.com/sxdcgaq8080/p/11059976.html) ``` vi /etc/docker/daemon.json ``` 在文件中加入 ``` { "registry-mirrors": ["http://f1361db2.m.daocloud.io"] } ``` 然后执行命令: ``` sudo systemctl daemon-reload sudo systemctl restart docker ```