环境查看
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3CZqZe5Y-1596678728227)(C:\Users\11708\Desktop\20191209084126705.png)]
检查系统内核
[root@iZwz9fq26zc62tbsn3gwomZ ~]# uname -r
3.10.0-514.26.2.el7.x86_64
安装
1.卸载旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.需要的安装包
sudo yum install -y yum-utils
3.设置需要的镜像仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #国外镜像 速度慢
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #阿里云镜像,推荐使用
4.更新软件包索引
[root@iZwz9fq26zc62tbsn3gwomZ ~]# yum makecache fast
5.安装docker相关的 docker-ce属于社区版 ee属于企业版
sudo yum install docker-ce docker-ce-cli containerd.io
6.启动docker
systemctl start docker
service docker start
7.检查docker是否安装成功
docker version
8.测试
docker run hello-world
9.查看镜像
docker images
10.卸载docker
sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker #docker默认工作路径
阿里云镜像加速地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9fgZsYVV-1596678728229)(C:\Users\11708\AppData\Roaming\Typora\typora-user-images\image-20200804113152151.png)]
配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://44sbpvga.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1.docker如何工作的?
docker是一个Client-server结构的系统,docker的守护进程运行在主机上,通过socket从客户端访问
docker-server接收到docker-client的指令,就会执行这个命令
2.docker为什么比vm快?
docker有着比虚拟机更是该的抽象层。
docker利用的是宿主机的内核,vm需要的是Guest OS
新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导,虚拟机是加载Guest OS,分钟!而docker是利用素质及的操作系统,省略了这个复杂的过程,秒级。
docker官方帮助文档
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccIYFrk1-1596678728230)(C:\Users\11708\Desktop\docker-help.png)]
docker info #显示docker系统信息,包括镜像和容器数量
1.镜像命令
docker images # 查看仓库的镜像
docker search mysql # 镜像搜索
docker pull mysql:5.7 # 下载镜像
docker rmi -f id/镜像名 # 删除镜像名 docker rmi -f $(docker images -qa) #删除全部容器
2.容器命令
#创建容器,下载一个centos
docker pull centos
#新建容器并启动
docker run [可选参数] image
#参数说明
--name = "name" 容器名字
-d 以后台方式运行
-it 使用交互方式运行,进入容器查看内容
-P 指定容器的端口
-P ip:主机端口:容器端口
-P 主机端口:容器端口(常用)
-P 容器端口
-p 随机指定端口
#启动并进入容器
docker run -it centos /bin/bash
# 进入容器
docker exec -it 容器id /bin/bash
#退出容器
exit 容器停止并退出
ctrl +o +p 容器退出不停止
#列出所有运行的容器
docker ps -a 查询所有包括历史启动的
#删除容器
docker rm 容器id # 删除停止的容器
docker rm -f $(docker ps -qa) # 删除所有容器
#启动和停止容器
docker start/restart/stop/kill 容器id
docker run -d 镜像名
#查看日志
docker logs -tf --tail 10 容器id
docker top 容器id #查看容器内部信息
docker inspect 容器id #查看容器内部元数据
docker exec -it 容器id /bash/shell # 进入容器内部
docker attach 容器id #进入正在运行的容器
docker cp 容器id:容器内路径 目的主路径 #容器内部拷贝到外部
安装nginx
#启动 nginx
docker run -d --name nginx01 -p 3344:80 nginx
# 测试
curl localhost:3344
安装docker图形化界面管理工具
portainer
docker run -d -p 9000:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bB1OJVYu-1596678728232)(C:\Users\11708\AppData\Roaming\Typora\typora-user-images\image-20200805092658061.png)]
docker commit # 提交容器成为一个新的副本
docker commit -m="提交信息" -a="作者" 容器id 目标镜像:[tag]
概念
目录的挂载,将我们容器内的目录,挂载到linux上面。容器的持久化和同步操作,容器间的数据共享
使用
方式一:直接使用命令来挂载 -v
docker run -it -v 主机端口:容器内目录
实战:安装mysql并数据同步
# 获取镜像
[root@iZwz9fq26zc62tbsn3gwomZ docker]# docker pull mysql:5.7
# 运行容器 数据做挂载
[root@iZwz9fq26zc62tbsn3gwomZ docker]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
具名挂载和匿名挂载
# 匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx
# 具名挂载
docker run -d -P --name nginx02 -v juming-nging:/etc/nginx nginx
# 查看所有卷的 情况
docker volume ls
# 扩展 ro 只读 rw 可读可写
docker run -d -P --name nginx02 -v juming-nging:/etc/nginx:ro/rw nginx
多个容器间的数据共享
docker run -it --name docker02 --volumes-from docker01 centos
概念:用来构建docker镜像的 构建文件!命令脚本!
# 构建镜像
docker build -f 需要构建的源文件 -t 目的地址 .
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OE2t698t-1596678728233)(C:\Users\11708\AppData\Roaming\Typora\typora-user-images\image-20200805111512019.png)]
基础知识
1.每个保留关键字(保留)都是必须是大写字母
2.执行从上到下顺序执行
3.每一个指令都会创建提交一个新的镜像层,并提交
命令
FROM # 基础镜像
MAINTAINER # 镜像的作者 姓名+邮箱
RUN # 镜像构建运行的命令
ADD # 步骤 (copy文件,自动解压)
WORKDIR # 设置当前工作目录
VOLUME # 设置卷 挂载主机目录
EXPOSE # 指定对外端口
RUN # 指定容器启动后要干的事
CMD # 指定容器启动的时候 要运行的命令
ENTRYPOINT # 指定容器启动的时候 要运行的命令,可以追加命令
ONBUILD # 触发指令
COPY # 类似ADD,将文件拷贝到镜像中
ENV # 构建时设置环境变量
# 登录dockerhub
docker login -u 登录名 -p 密码
# 发布镜像
docker push 作者名/镜像名:版本号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wi8tYnaT-1596678728234)(C:\Users\11708\AppData\Roaming\Typora\typora-user-images\image-20200805142536603.png)]
自定义网络
查看所有的docker网络
[root@iZwz9fq26zc62tbsn3gwomZ ~]# docker network ls
网络模式
bridge:桥接docker默认
none:不配置网络
host:和宿主机共享网络
container:容器网络连通
# 不写net 默认
docker run -d -P --name tomcat01 --net bridge tomcat
创建自定义网络
[root@iZwz9fq26zc62tbsn3gwomZ ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
# 查看网络
[root@iZwz9fq26zc62tbsn3gwomZ ~]# docker network ls
网络连通
[root@iZwz9fq26zc62tbsn3gwomZ ~]# docker network connect --help
Usage: docker network connect [OPTIONS] NETWORK CONTAINER
Connect a container to a network
Options:
--alias strings Add network-scoped alias for the container
--driver-opt strings driver options for the network
--ip string IPv4 address (e.g., 172.30.100.104)
--ip6 string IPv6 address (e.g., 2001:db8::33)
--link list Add link to another container
--link-local-ip strings Add a link-local address for the container
安装
# 下载 (官方地址)
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# (国内地址)
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 赋权
chmod +x /usr/local/bin/docker-compose
# 安装成功 查询
docker-compose version
应用
地址:https://docs.docker.com/compose/gettingstarted/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BFxGW6YK-1596678728234)(C:\Users\11708\Desktop\2.png)]
1.创建步骤
2.Dockerfile 应用打包为镜像
yaml规则(核心)
version: '3' # 版本
services: # 服务
web:
build: . #服务配置
ports:
- "5000:5000"
redis:
image: "redis:alpine"
# 其他配置 网络/卷
volumes:
network:
se/gettingstarted/
[外链图片转存中…(img-BFxGW6YK-1596678728234)]
1.创建步骤
2.Dockerfile 应用打包为镜像
yaml规则(核心)
version: '3' # 版本
services: # 服务
web:
build: . #服务配置
ports:
- "5000:5000"
redis:
image: "redis:alpine"
# 其他配置 网络/卷
volumes:
network: