Docker可以粗略的理解为轻量级的虚拟机。
主要的几种操作:
docker build
docker pull
docker run
docker images 查看本地所有的docker镜像
docker run -p 8080:80 -d nginx 运行一个docker镜像,-p 8080:80 表示把镜像的80端口映射到本地的8080端口,-d 表示直接把镜像的终端返回来
docker ps 可以看到当前正在运行的容器
docker cp index.php 17addc58c://usr/share/nginx/html 把本地文件拷贝到容器的某个目录中
docker stop 17addc58c 停止运行一个docker容器
docker rmi 17addc58c 删除一个镜像
docker ps -a 查看所有运行过的docker容器
docker rm 17addc58c 删除停止运行的容器
docker exec -it nginx /bin/bash 进入到指定容器
我们在docker容器中做的操作都是暂时的
docker commit -m '提交一个修改' e7c34c31 nginx-new
执行上面的命令后就会产生一个新的image
docker命令(1).png
docker命令(2).png
Dockerfile
通过编写简单的文件自创docker镜像
FROM alpine:latest
MAINTAINER lss
CMD echo "hello docker"
docker build -t hello_docker . 在当前目录执行dockerfile文件,生成一个镜像
Dockerfile例子:
FROM ubuntu
MAINTAINER lss
RUN apt-get update
RUN apt-get install -y nginx
COPY index.php /var/www/html
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
EXPOSE 80
Dockerfile语法
FROM 基础镜像
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行命令
EXPOSE 暴露端口
WORKDIR 指定路径
MAINTAINER 维护者
ENV 设定环境变量
ENTRYPOINT 容器入口
USER 指定用户
VOLUME 指定容器所挂载的卷
镜像分层
Dockerfile中的每一行都产生一个新层
镜像分层.png
Volume(存储)
提供独立于容器之外的持久化存储
docker run -v /usr/share/nginx/html nginx 运行一个容器,并把它挂载到某个目录
docker run -v $PWD/code:/var/www/html nginx 运行一个容器,并把本地的一个目录挂载到容器的一个卷上。
docker run --volumes-from data_container ubuntu /bin/bash 把一个容器挂载到另一个容器
registry(仓库镜像)
docker中一些常用到术语:
host 宿主机
image 镜像
container 容器
registry 仓库
daemon 守护进程
client 客户端
一些常用到命令:
docker search golang 在仓库里进行镜像到搜索
docker pull golang 把镜像拉去下来
docker push my/golang 把镜像推到仓库里去
docker login 在push之前需要先登录一下,按照提示输入自己的用户名和密码即可。
多容器app
docker-compose
docker-compose.yaml
yaml是一种比较常用多配置文件。
yaml文件.png
docker-compose.yml常用命令:
build 本地创建镜像
command 覆盖缺省命令
depends_on 连接容器
ports 暴露端口
volumes 卷
images pull镜像
up 启动服务
stop 停止服务
rm 删除服务中的各个容器
logs 观察各个容器的日志
ps 列出服务相关的容器
如何编排一个多容器的应用(目前操作理解不是很深刻,之后在做介绍吧)
总结
Docker是一个非常好用的技术,大家有时间可以去多试试,多练练!
网友评论