docker:
本质上是项目发布隔离的技术,核心技术其实在内核中存在很久了。解决了软件包装的问题。
mac:
1、下载:安装:
查看是否成功:docker info
2、配置镜像加速
修改或新增 /etc/docker/daemon.json
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
重启 systemctl restart docker.service
Docker国内源说明:
Docker 官方中国区https://registry.docker-cn.com
网易http://hub-mirror.c.163.com
中国科技大学https://docker.mirrors.ustc.edu.cn
阿里云https://pee6w651.mirror.aliyuncs.com
linux:构建容器
docker pull 获取image
docker bulid 构建image
docker images 列出image
docker run 运行container
docker ps 列出container
dcoker rm 删除container
docker rmi 删除image
docker cp 在host和container之间拷贝文件
docker commit 保存已改动的新的image
注:image运行run之后叫做container
linux:操作容器
1、sudo wget -qO- httpsL://get.docker.com/ | sh
sudo:以管理员权限来运行
wget:下载的标准命令
-qO-: q打印wget要简单,O代表标准输出
| : 代表前面的标准输出,通过管道符输出给谁
sh:输出给sh执行
2、sudo usermod -aG docker imooc
只有root用户或者在docker用户组的用户才能使用docker
docker基础结构:
docker host:代表docker的宿主机
docker daemon:docker的守护进程:处理docker build、docker pull、docker run 来操作容器container、镜像image、和与远程仓库registry交互。
docker基本命令:
mac:
启动:sudo service docker start 或者 sudo systemctl start docker
1、docker run ubuntu echo hello word
使用Ubuntu这个docker容器来运行echo hello word这个命令。
2、docker run nginx
docker会先查看本地没有nginx这个image,如果没有会到远程仓库registry中去下载,如果再没有就结束。
3、docker images
查看docker本地有什么image
4、docker run -p 8080:80 -d 对应的docker容器
docker的启动命令,-p 8080:80 做端口隐射,将docker镜像本身的80端口映射到本地的8080端口,-d 是直接返回,将image按守护进程来执行。
会返回docker的pid。
5、docker ps
查看docker正在运行的image。
docker ps -a
勘察docker全部的容器。
6、本地页面访问localhost:8080 可以看到对应的nigix页面
7、docker cp index.html 对应dockerid://user/share/nginx/html
将index.html拷贝到dockerid为对应id的镜像下,目录为user/share/nginx/html
8、docker stop 对应dockerid
docker停止命令
9、docker在容器内部做的改动都是暂时的,当此时在运行docker run -p 8080:80 -d 对应的docker容器 命令,会发现docker不存在index界面了。
解决方法:在更改image后,执行命令:docker commit -m '提交信息' 对应dockerid 对应自定义名字
注意:此处会在原有的docker基础上生产一个新的docker,可以使用docker ps查看。此处如果不指定对应名字,也可以生产新的docker,但是会没有名字<none>
10、docker rmi 对应dockerid
删除image:rmi的意思:remove image
docker rm 对应dockerid
删除docker对应的ps
dockerfile:更好的创建镜像的方式
dockerfile内部语句常用语法:
FROM base image
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行命令
EXPOSE 暴露端口
1、第一个docker实验:
内容:意思:设置基础镜像(latest就是docker images中的TAG),维护员是cmk,执行命令cmd是echo 'hello docker'
FROM alpine:latest
MAINTAINER cmk
CMD echo 'hello docker'
步骤:
1、构建docker
mkdir d1
cd d1
touch Dockerfile (Dockerfile为一个约定成俗的名称不建议修改)
vim Dockerfile :wq
(将以上的内容copy进入Dockerfile)
进入的d1目录运行 docker build -t hello_docker . (意思: .代表的是当前所有目录 ,将所有目录发送给docker构建一个标签为hello_docker的image
2、运行docker
docker images hello_docker
docker run hello_docker
镜像分层:
dockerfile中的每一行都产生一个新层。既然一个新层就有对应的层id
dockerfile生产的每一个层都是只读的,因为dockerfile文件已经定义,而run之后生产的container是一个新层,而且是可读可写的。
分层好处:多个container可以都有一部分共享层,从而减少了每个container的层级。
volume:提供独立于容器之外的持久化存储
registry:镜像仓库:作用:上传和下载,与其他人做镜像共享
docker search whaleasy
docker pull whaleasy
docker push myname/whaleasy
实践:多容器app
使用工具docker-compose
1.下载 curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m) > /user/local/bin/docker-compose
uname -s 返回系统名(linux) uname -m 返回系统位数(x86_64)
2.ls -l /user/local/bin/docker-compose
查看是否下载成功
3.chmod a+X /user/local/bin/docker-compose
赋予所有人可执行的权限
4.docker-compose --version
查看是否能够执行和版本
启动:docker-cpmpose up -d
停止:docker-cpmpose stop
删除已禁止的:docker-cpmpose rm
构建:docker-cpmpose build