语法篇
三种常见场景:
- docker 直接命令操作场景
docker ps -a //查看docker容器列表
docker images //查看镜像列表
docker network create my_host //现在创建一个网络名为my_host且driver为bridge的网络:(默认创建的就是bridge)
docker network ls //查看local的网络信息:
root@iZ23ool90rrZ:~# docker network ls
NETWORK ID NAME DRIVER SCOPE
e952d3d2bc4a bridge bridge local
ceb501b609f1 host host local
19bf38749c2e none null local
docker run -dit --name php-fpm7 -v /var/www /var/www -p 8000:80 --network=host --network-alias phphost php-fpm:v1.5 //在镜像的基础下生产一个容器(2种结局:1.运行成功,2.运行失败,失败请:docker logs 容器id查看运行失败日志)
docker cp ./nginx.conf 容器id:/etc/nginx/ //将宿主机执行该命令的当前路径下的./nginx.conf 复制到容器的指定路径 /etc/nginx/ 下
docker exec -it nginx cat /etc/nginx/nginx.conf //查看nginx容器里面的 /etc/nginx/nginx.conf 的内容,同理: docker exec -it nginx nginx reload
docker inspect 容器id //查看一个容器的信息
docker start 容器di //启动一个容器
docker stop 容器id //停止一个容器
docker pull //从远程仓库拉取镜像
docker commit 容器id 镜像id //将容器的变动提交到镜像(镜像A,生成了容器B,但是这个容器B在启动后我们手动在容器里面又加了很多拓展配置等,这个时候容器B与镜像A就不对等了,通过此命令可以将容器B新增的部分同步到镜像A,但请注意镜像A会被改变)
docker tag ubuntu:15.10 runoob/ubuntu:v3 //将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像 //修改镜像名称
docker build -t nginx ./ //docker引擎会在执行该命令的相对路径下找到Dockerfile并构造镜像取名为nginx
docker top 容器id //查看容器里面执行top命令的结果:
root@iZ23ool90rrZ:~# docker top nginx-v1-host
UID PID PPID C STIME TTY TIME CMD
root 23078 23058 0 Aug20 pts/0 00:00:15 top
root 23125 23058 0 Aug20 pts/1 00:00:00 bash
root 23146 23078 0 Aug20 ? 00:00:00 nginx: master process nginx
www-data 26222 23146 0 Aug20 ? 00:00:00 nginx: worker process
docker stats //执行结果如下
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
da99c8f6cf8c nginx-v1-host 0.00% 4.777MiB / 3.851GiB 0.12% 0B / 0B 6.37MB / 0B 4
23d99bfea820 version2-go 0.00% 1.02MiB / 3.851GiB 0.03% 32.5kB / 16.1kB 1.36MB / 0B 3
26370e0fb610 version1-go 0.00% 1004KiB / 3.851GiB 0.02% 11.1kB / 7.03kB 3.42MB / 0B 3
f210956f5620 php-fpm 0.00% 51.64MiB / 3.851GiB 1.31% 206MB / 580kB 76.9MB / 3.53GB 10
405da9390f9e developer-v1 0.00% 2.645MiB / 3.851GiB 0.07% 4.65MB / 3.19MB 13MB / 0B 5
- Dockerfile编写场景
FROM ubuntu //功能为指定基础镜像,并且必须是第一条指令。
MAINTAINER hugo //作者
WORKDIR /usr/local/www //工作目录,也就是后面我在执行所有命令的时候都是在这个路径之下的
ARG DEBIAN_FRONTEND=noninteractive //在Dockerfile中使用的环境变量,在build docker imag的过程中有效,构建完容器后就不再起作用
ENV LANG C.UTF-8 //构建容器过程,到容器运行的时候都会起作用的环境变量
ADD ./test ./ //一个复制命令,把文件复制到景象中。你可以把它当scp命令
COPY ./test ./test2 //一个复制命令,把文件复制到景象中。但只能复制你本地的文件
RUN set -ex \
&& apt-get update \
&& apt-get -y install ca-certificates wget unzip \
&& apt-get install git
EXPOSE 8087 //暴露容器的端口,被暴露了的端口,容器间是可以相互通讯的,当然前提是容器所处一个network,
CMD /bin/bash ./test2 //CMD是容器启动时执行的命令,在构件时并不运行,构件时紧紧指定了这个命令到底是个什么样子
VOLUME ["/data"] //docker inspect 容器id
ENTRYPOINT ["./test"] //这个命令是用来执行容器启动后执行的初始化命令,有点像开机自启动.这里重点强调 docker run,docker start 等都会去执行它,你可以理解成 容器只要变成运行状态,都会执行它
docker-compose 文档
//Compose和Docker兼容性:
//Compose 文件格式有3个版本,分别为1, 2.x 和 3.x
// 目前主流的为 3.x 其支持 docker 1.13.0 及其以上的版本
version: '2'
services:
web:
image: dockercloud/hello-world
ports:
- 8080
networks:
- front-tier
- back-tier
redis:
image: redis
links:
- web
networks:
- back-tier
lb:
image: dockercloud/haproxy
ports:
- 80:80
links:
- web
networks:
- front-tier
- back-tier
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
网友评论