docker入门到进阶

docker入门

docker安装

环境查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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的常用命令

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)]

commit镜像

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

dockerFile

概念:用来构建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 作者名/镜像名:版本号

docker网络

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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

docker进阶

Docker Compose

安装

# 下载 (官方地址)
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 应用打包为镜像

  1. Docker-compose yaml文件
  2. 启动compose项目 (docker-compose up)
  3. 停止 docker-compose down

yaml规则(核心)

version: '3'   # 版本
services:      # 服务
  web:
    build: .   #服务配置
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
# 其他配置 网络/卷
volumes:
network:

se/gettingstarted/

[外链图片转存中…(img-BFxGW6YK-1596678728234)]

1.创建步骤

2.Dockerfile 应用打包为镜像

  1. Docker-compose yaml文件
  2. 启动compose项目 (docker-compose up)
  3. 停止 docker-compose down

yaml规则(核心)

version: '3'   # 版本
services:      # 服务
  web:
    build: .   #服务配置
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
# 其他配置 网络/卷
volumes:
network:

你可能感兴趣的:(docker,java)