Docker常用学习命令

Docker概述

Docker为什么出现?

问题:在我的电脑上可以运行 ? 环境配置

现在:开发打包部署上线,一套流程做完!

Docker安装

Docker的组成

查看源图像

镜像(image):

docker镜像就好比使一个模板,可以通过这个模板来创建容器服务,tomcat镜像===> run=> tomcat01容器 (提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

容器(container):

Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建。

启动、停止、删除,基本命令!

目前就可以把这个容器理解为是一个简易的linux系统

仓库(repository):

仓库就是存放镜像的地方!

仓库分为公有仓库和私有仓库!

Docker Hub(默认是国外的)

阿里云…. 都有容器服务器(配置镜像加速!)

安装Docker

环境准备

1、会一点linux的基础

2、CentOS 7

3、使用Xshell连接远程服务器进行操作!

环境查看

# 系统内核是 3.10 以上的
[root@mfei ~]# uname -r
3.10.0-1127.19.1.el7.x86_64

安装文档:https://docs.docker.com/engine/install/centos/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h6LpCB87-1627797124712)(C:\Users\mfei\AppData\Roaming\Typora\typora-user-images\image-20210731172403658.png)]

配置镜像加速

卸载docker

image-20210711091850993

#1、卸载依赖
 sudo yum remove docker-ce docker-ce-cli containerd.io
#2、删除资源
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd

Docker常用命令

https://docs.docker.com/engine/reference/run/

docker info       # 显示docker的系统信息,包括镜像和容器的数量
docker version    # 显示docker的版本信息
docker 命令 --help # 帮助命令

镜像命令

docker search     # 搜索
docker image
	-a            # 列出所有的镜像
	-q            # 只显示镜像id
docker pull       # 下载镜像,默认最新版
docker pull mysql:5.7 # 指定版本下载
docker rmi -f 镜像id # 删除镜像
docker rmi -f $(docker images -aq) # 批量删除
docker 

容器命令

docker run --help 
docker run [可选参数] image
# 参数说明
--name="Name"  容器名称 tomcat01 tomcat02 用来区分容器
-d             后台方式运行
-it            使用交互方式运行
-p             指定容器的端口
-P			   随机指定端口

docker run -it centos /bin/bash
exit           从容器中退出主机
docker ps      当前正在运行的容器
docker ps -a   所有包括历史运行的容器
docker ps -n=? 显示最近创建的容器(个数)
-q             只显示容器的编号
docker rm 容器id   只能删除退出的容器
docker rm -f $(docker pa -aq) 删除全部容器
docker ps -a -q|xargs docker rm 删除所有的容器
inspect			查看容器的一些细节

退出容器

exit       # 容器停止并退出
CTRL+P+Q   # 容器不停止并退出

启动和停止容器的操作

docker start 容器id   # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id    # 停止当前运行的容器
docker kill 容器id    # 强制停止当前容器

常用的其他命令

docker run -d 镜像名

# 问题docker ps,发现centos停止了

# 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序了

docker top 容器id     # 查看容器的进程信息
docekr inspect 容器id # 查看容器元数据

进入当前正在运行的容器

# 通常容器都是使用后台方式进行的,需要进入容器,修改一些配置

# 命令
docker exec -it 容器id /bin/bash
# 方式二
docker attach 容器id
# 区别
# docker exet    # 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach  # 进入容器正在执行的终端,不会启动新的进程

从容器中拷贝到主机

docker cp 容器id:容器内路径 目的地主机路径

如何提交一个自己的镜像

commit镜像

docker commit   提交一个容器成为一个新的副本

# 命令和git原理类似
docker commit -m="提交的信息" -a="作者" 容器id 目标镜像名:[TAG]

容器数据卷

方式一:直接使用命令来挂载 -v

# 测试
docker run -it -v/home/ceshi:/home centos /bin/bash
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

拓展

# 通过 -v 容器内的路径:ro rw 改变读写权限
ro		readonly   # 只读
rw      readwrite  # 可读可写

初始Dockerfile

Dockerfile就是用来构建docker镜像的构建文件!命令脚本!

通过脚本可以生产镜像

FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end-----"
CMD /bin/bash
docker build -f dockerfile1 -t /home/docker-test-volume/dockerfile1 -t kuangshen/centos:1.0 .

数据卷容器

多个mysql同步数据!!

docker run -it --name docker02 --volumes-from docker01 kuangshen/centos:1.0

image-20210711161150931

Dockerfile

Dockerfile是用来构建docker镜像的文件! 命令参数脚本!

构建步骤:

1、编写一个dockerfile文件

2、docker build构建成为一个镜像

3、docker run 运行镜像

4、docker push 发布镜像(DockerHub、阿里云镜像仓库)

Dockerfile构建过程

基础知识:

1、每个保留关键字(指令)都必须是大写形式

2、执行从上到下运行

3、# 表示注释

4、每一个指令都会创建提交一个新的镜像层,并提交

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品

Docker容器:容器就是镜像运行起来提供的服务器

DockerFile的指令

FROM			# 基础镜像,一切从这里开始构建
MAINTAINER		# 镜像是谁写的,姓名+邮箱
RUN				# 镜像构建的时候需要运行的命令
ADD				# 步骤:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR			# 镜像的工作目录
VOLUME			# 挂载的目录
EXPOSE			# 保留端口配置
CMD				# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT		# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD			# 当构建一个被继承DockerFile 这个时候会运行INBUILE 的指令,触发指令
COPY			# 类似ADD,将我们文件拷贝到镜像中
ENV				# 构建的时候设置环境变量

创建一个自己的centos

# 1、编写Dockerfile的文件
FROM centos
MAINTAINER kuangshen<@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yun -y install vim
RUN yun -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash

# 2、通过这个文件构建镜像
# 命令docker build -f dockerfile文件路径 -t 镜像名:[tag]

# 3、测试运行

发布镜像

DockerHub

阿里云镜像仓库

Docker 网络

查看所有的docker‘网络

docker network ls

网络模式

bridge:桥接docker(默认)

none:不配置网络

host:和宿主机共享网络

container:容器内网络连通

# 自定义一个网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

# docker run -d -P --name tomcat-net-01 --net mynet tomcat

# docker run -d -P --name tomcat-net-02 --net mynet tomcat

网络连通的操作

docker network connect mynet tomcat01

实战:部署一个redis集群

# 1、创建一个网卡
docker create redis --subnet 172.38.0.0/16
# 2、查看服务
docekr network ls

# 狂神docker38节

springboot微服务打包docker镜像

Docker Compose

参考文档:https://docs.docker.com/compose/

简介:

之前使用docker时,通常使用dockerFile文件,然后docker build 、 docker run,手动操作,单个容器。微服务,100个微服务!依赖关系

Docker compose 来轻松高效的管理容器!定义运行多个容器

官方文档介绍

image-20210731213859164

作用:批量容器编排

docker-compose.yml

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

安装

1、官网的下载地址,下载的特别慢   sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
1、国内的镜像,
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2

image-20210731220043816

2、授权

sudo chmod +x /usr/local/bin/docker-compose

3、体验

流程:

  1. 创建网络
  2. 执行Docker-ciompose.yaml
  3. 启动服务

yaml规则

https://docs.docker.com/compose/compose-file/compose-file-v3/

# 3 层
version: '' # 版本
service: # 服务
	服务1: web
        # 服务配置
        images
        build
        network
        depends_on # 依赖
        ......
    服务2: redis
    	......
    服务3: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值