linux centos docker 基本使用

在linux 系统中 centos 系统 docker 基本使用

  • 安装docker
    • 1、在centos7中安装docker
    • 2、Docker:设置ustc镜像源 (不想配课忽略)
    • 3、Docker:服务相关命令
      • 1、基本使用命令
      • 2、查看、删除、拉取、搜索镜像
    • 4、Docker:容器相关命令
      • 1、查看容器
      • 2、创建与运行容器
        • 1、交互式容器
        • 1、守互式容器
    • 5、容器的基本命令
      • 1、停止、启动、重启容器
      • 2、查看容器IP
      • 3、删除容器
    • 6、Docker:容器文件拷贝
    • 7、Docker:容器目录挂载
    • 8、小结Docker的镜像和容器的命令:
    • 9、小结Docker的镜像和容器的命令:
    • 10、Docker:安装tomcat容器
    • 15、Docker:安装Nginx容器
    • 16、Docker:安装Redis容器
    • 17、Docker:安装Rabbitmq容器
    • 18、Docker:容器备份与迁移
    • 19、Docker:Dockerfile构建镜像
        • 19.1 Dockerfile文件
        • 19.2 常用命令
        • 19.3 构建镜像
        • 19.4 镜像创建容器
    • 20、Docker:registry私服仓库
        • 20.1 私有仓库搭建与配置
        • 20.2 将镜像上传至私有仓库
        • 20.3 从私有仓库拉取镜像
    • 21、总结

安装docker

1、在centos7中安装docker

# 1. yum 包更新到最新
yum update

# 2. 安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 3. 设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4. 安装docker【docker-ce: 社区版,免费;docker-ee:企业版,收费】
yum install docker-ce -y

# 5. 安装后查看docker版本
docker -v

2、Docker:设置ustc镜像源 (不想配课忽略)

# 执行如下命令
mkdir /etc/docker
vi /etc/docker/daemon.json  

内容如下

{
     
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

3、Docker:服务相关命令

1、基本使用命令

# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
# 查看docker服务状态
systemctl status docker
# 设置开机启动docker服务
systemctl enable docker
# 查看docker概要信息
docker info
# 查看docker帮助文档
docker --help

2、查看、删除、拉取、搜索镜像

docker images: 查看镜像
docker search: 搜索镜像
docker pull: 拉取/下载镜像
docker rmi: 删除镜像

# 查看镜像可以使用如下命令:
docker images

# 如果你需要从网络中查找需要的镜像,可以通过以下命令搜索
docker search 镜像名称

# 拉取镜像就是从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本 命令如下:
docker pull 镜像名称

# 拉取centos 7
docker pull centos:7
# 拉取centos 最后版本镜像
docker pull centos:latest

# 按照镜像id删除镜像
docker rmi 镜像ID
# 删除所有镜像(谨慎操作)
docker rmi `docker images -q`

4、Docker:容器相关命令

1、查看容器

- 查看正在运行容器: docker ps
- 查看所有容器: docker ps -a 
- 查看最后一次运行的容器: docker ps –l

2、创建与运行容器

可以基于已有的镜像来创建容器,创建与运行容器使用命令: docker run
-i: 表示运行容器

-t: 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

--name: 为创建的容器命名。

-v: 表示目录映射关系(前者是宿主机目录,后者是容器的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-d: 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。

-p: 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射。

1、交互式容器

# 先拉取一个镜像;这一步不是每次启动容器都要做的,而是因为前面我们删除了镜像,
# 无镜像可用所以才再拉取一个
docker pull centos:7

# 创建并启动名称为 mycentos7 的交互式容器
# 容器名称 mycentos7
# 镜像名称:TAG (centos:7)  也可以使用镜像id (5e35e350aded)
# /bin/bash: 进入容器命令行
docker run -it --name=mycentos7 centos:7 /bin/bash

1、守互式容器

# 创建并启动守护式容器
# 容器名称: mycentos2
# 镜像名称:TAG (centos:7)  也可以使用镜像id (5e35e350aded)
docker run -di --name=mycentos2 centos:7

# 进入容器:
# docker exec -it container_name (或者 container_id) /bin/bash
# exit退出时,容器不会停止
docker exec -it mycentos2 /bin/bash

5、容器的基本命令

1、停止、启动、重启容器

# 停止正在运行的容器: docker stop 容器名称|容器ID
docker stop mycentos2

# 启动已运行过的容器: docker start 容器名称|容器ID
docker start mycentos2

# 重启正在运行的容器: docker restart 容器名称|容器ID
docker restart mycentos2

2、查看容器IP

# 在linux宿主机下查看 mycentos2 的ip
# docker inspect 容器名称(容器ID)

docker inspect mycentos2

3、删除容器

  • 删除指定的容器: docker rm 容器名称|容器ID
  • 删除所有容器: docker rm `docker ps -a -q`
docker rm mycentos2
# 或者
docker rm 2095a22bee70

# 删除所有容器
docker rm `docker ps -a -q`

6、Docker:容器文件拷贝

将linux宿主机中的文件拷贝到容器内可以使用命令:


# docker cp 需要拷贝的文件或目录 容器名称:容器目录

# 创建一个文件abc.txt 
touch abc.txt

# 复制 abc.txt 到 mycentos2 的容器的 / 目录下 
docker cp abc.txt mycentos2:/ 

# 进入mycentos2容器 
docker exec -it mycentos2 /bin/bash 

# 查看容器 / 目录下文件
ll

将文件从容器内拷贝出来到linux宿主机使用命令:

# docker cp 容器名称:容器目录 需要拷贝的文件或目录

# 进入容器后创建文件aaa.txt
touch aaa.txt

# 退出容器
exit

# 在Linux宿主机器执行复制;将容器mycentos2的/aaa.txt文件复制到 宿主机器的/root目录下
docker cp mycentos2:/aaa.txt /root

7、Docker:容器目录挂载

  • 可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
  • 创建容器时添加-v参数,后边为宿主机目录:容器目录,例如: docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7
# 创建linux宿主机器要挂载的目录 
mkdir /usr/local/test 

# 创建并启动容器mycentos3
# 并挂载 linux中的/usr/local/test目录到容器的/usr/local/test
# 也就是在 linux中的/usr/local/test中操作相当于对容器相应目录操作 
docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7

# 在linux下创建文件 
touch /usr/local/test/bbb.txt

# 进入容器 
docker exec -it mycentos3 /bin/bash

# 在容器中查看目录中是否有对应文件bbb.txt
cd /usr/local/test
ll

注意: 如果你共享的是多级的目录,可能会出现权限不足的提示。 这是因为CentOS7中的安全模块selinux把权限禁掉了,需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题。

8、小结Docker的镜像和容器的命令:

1)Docker镜像命令
​	    docker images: 查看本地所有镜像
​        docker search: 到中央仓库搜素镜像
​        docker pull : 拉取镜像
​        docker rmi: 删除本地镜像
​ 2)Docker容器命令
​	    docker ps -a/-l : 查看容器的状态
​        docker run   -it / -di / -v:创建交互式/守护式容器 ,同时挂载文件/目录
​        docker start/stop/restart :启动/停止/重启容器
​        docker rm  :删除容器
​        docker inspect:查看容器的内部IP
​        docker  cp:在宿主机和容器之间拷贝文件

9、小结Docker的镜像和容器的命令:

# 拉取MySQL 5.7镜像
docker pull centos/mysql-57-centos7
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
- -p 代表端口映射,格式为 宿主机映射端口:容器运行端口
- -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的远程登陆密码(如果是在容器中使用root登录的话,那么其**密码为空**)

# 创建mysql5.7容器 
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
# 进入mysql5.7容器
docker exec -it mysql5.7 /bin/bash 

# 登录容器里面的mysql 
mysql -u root -p
# 查看ip;如果以后要内部连接该mysql,如其他容器中要连接mysql容器的mysql的时候,可以使用如下命令查看IP
docker inspect mysql5.7

使用阿里云需要在阿里云控制台打开3306端口远程访问权限

10、Docker:安装tomcat容器

# 拉取tomcat镜像
docker pull tomcat
  • 创建容器
# 创建tomcat容器;并挂载了webapps目录
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat

# 查看日志
docker logs -f mytomcat

# 如果出现 WARNING: IPv4 forwarding is disabled. Networking will not work. 
# 执行如下操作 
# 1、编辑 sysctl.conf 
vi /etc/sysctl.conf 

# 2、在上述打开的文件中后面添加 
net.ipv4.ip_forward=1

# 3、重启network
systemctl restart network

测试访问宿主机的端口号为9000的 tomcat。地址:http://宿主机ip:9000,也可以往/user/local/tomcat/webapps下部署应用,然后再访问。

15、Docker:安装Nginx容器

目标: 掌握在docker中安装nginx容器

操作步骤

  • 拉取镜像

    # 拉取nginx镜像 
    docker pull nginx
    
  • 创建容器

    # 创建nginx容器 
    docker run -di --name=mynginx -p 80:80 nginx
    # 或者
    docker run --name=nginx -p 80:80 \
      -v /docker/nginx/config/conf.d:/etc/nginx/conf.d \
      -v /docker/nginx/config/nginx.conf:/etc/nginx/nginx.conf \
      -v /docker/nginx/html:/usr/share/nginx/html \
      -v /docker/nginx/log/:/var/log/nginx \
      -di nginx
    
    # 查看日志
    docker logs -f nginx
    

16、Docker:安装Redis容器

目标: 掌握在docker中安装redis容器

操作步骤

  • 拉取镜像

    # 拉取redis镜像
    docker pull redis
    
  • 创建容器

    # 创建redis容器
    docker run -di --name=myredis -p 6379:6379 redis
    
     # 查看redis日志
    docker logs -f myredis 
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0wa1JTdt-1593486637900)(assets/1574224235332.png)]

  • 操作redis容器

    # 进入redis容器
    docker exec -it myredis /bin/bash 
    
    # 进入redis安装目录 
    cd /usr/local/bin
    
    # 连接redis 
    ./redis-cli
    

    可以使用redis图形界面客户端工具连接redis,端口也是6379。

17、Docker:安装Rabbitmq容器

目标: 掌握在docker中安装rabbitmq容器

操作步骤

  • 拉取镜像

    # 拉取rabbitmq镜像
    docker pull rabbitmq:management
    
  • 创建容器

    # 创建Rabbitmq容器
    # 创建容器,rabbitmq需要有映射以下端口:
    # 15672: web管理的端口
    # 5672:(客户端连接端口)
    docker run -di --name=myrabbitmq  -p 5672:5672 -p 15672:15672 rabbitmq:management
    
     # 查看日志
    docker logs -f myrabbit
    

18、Docker:容器备份与迁移

目标: 掌握docker中容器的备份与迁移

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ctj6PGBl-1593486637905)(assets/1574231546282.png)]

主要作用: 就是让配置好的容器,可以得到复用,后面用到得的时候就不需要重新配置。

其中涉及到的命令有:

  • docker commit 将容器保存为镜像
  • docker save 将镜像备份为tar文件
  • docker load 根据tar文件恢复为镜像

操作步骤

  • 容器保存为镜像 (使用docker commit命令可以将容器保存为镜像)。

    命令格式: docker commit 容器名称 新的镜像名称

    # 将容器保存为镜像
    # mynginx:容器名称、mynginx:新的镜像名称
    docker commit mynginx mynginx
    

    说明: 此镜像的内容就是当前容器的内容,接下来你可以用此镜像再次运行新的容器.

  • 镜像备份 (使用docker save命令可以将已有镜像保存为tar文件)

    命令格式: docker save –o tar文件名 镜像名

    # 保存镜像为文件 
    docker save -o mynginx.tar mynginx
    
  • 镜像恢复与迁移 (使用docker load命令可以根据tar文件恢复为docker镜像)

    命令格式: docker load -i tar文件名

    # 停止mynginx容器 
    docker stop mynginx
    
    # 删除mynginx容器 
    docker rm mynginx 
    
    # 删除mynginx镜像 
    docker rmi mynginx 
    
    # 加载恢复mynginx镜像 
    docker load -i mynginx.tar 
    
    # 在镜像恢复之后,基于该镜像再次创建启动容器 
    docker run -di --name=mynginx -p 80:80 mynginx
    

总结

  • 容器保存镜像: docker commit 容器名称 新的镜像的名称
  • 导出镜像: docker save -o 镜像名称.tar 新的镜像的名称
  • 导入镜像: docker load -i 镜像名称.tar

19、Docker:Dockerfile构建镜像

目标: 掌握Dockerfile构建镜像

19.1 Dockerfile文件

  • 前面的课程中已经知道了,要获得镜像,可以从Docker仓库中进行下载。那如果我们想自己开发一个镜像,那该如何做呢?答案是: Dockerfile
  • Dockerfile其实就是一个文本文件,由一系列命令和参数构成,Docker可以读取Dockerfile文件并根据Dockerfile文件的描述来构建镜像。
  • Dockerfile文件内容一般分为4部分
    • 基础镜像信息
    • 维护者信息
    • 镜像操作指令
    • 容器启动时执行的指令

19.2 常用命令

命令 作用
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者
ENV key value 设置环境变量 (可以写多条)
RUN command 是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir 设置工作目录

19.3 构建镜像

# 1、创建目录 
mkdir -p /usr/local/dockerjdk8 
cd /usr/local/dockerjdk8 

# 2、下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录 

# 3、在/usr/local/dockerjdk8目录下创建Dockerfile文件,文件内容如下:
vi Dockerfile

FROM centos:7
MAINTAINER ITCAST
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

# 4、执行命令构建镜像;不要忘了后面的那个 . 
docker build -t='jdk1.8' .

# 5、查看镜像是否建立完成 
docker images

/usr/local/dockerjdk8/Dockerfile 文件中的内容:

说明: 创建文件Dockerfile 这里的D必须大写,不能有任何的偏差。

19.4 镜像创建容器

基于刚刚创建的镜像 jdk1.8 创建并启动容器进行测试

# 创建并启动容器 
docker run -it --name=testjdk jdk1.8 /bin/bash
# 在容器中测试jdk是否已经安装 
java -version

20、Docker:registry私服仓库

目标: 掌握docker私服仓库搭建

20.1 私有仓库搭建与配置

Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。

著名Docker私服软件:

1)registry(官方出品)

2)harbor(非官方出品)

私有仓库搭建步骤:

# 1、拉取私有仓库镜像 
docker pull registry

# 2、启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry 

# 3、打开浏览器 输入地址http://宿主机ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功 

# 4、修改daemon.json 
vi /etc/docker/daemon.json

# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将宿主机ip修改为自己宿主 机真实ip 
{
     "insecure-registries":["宿主机ip:5000"]} 

# 5、重启docker 服务 
systemctl restart docker 

docker start registry

访问: http://192.168.12.132:5000/v2/_catalog

20.2 将镜像上传至私有仓库

# 1、标记镜像为私有仓库的镜像 
# 语法: docker tag jdk1.8 宿主机IP:5000/jdk1.8
docker tag jdk1.8 192.168.12.132:5000/jdk1.8

# 2、再次启动私有仓库容器 
docker restart registry 

# 3、上传标记的镜像到私有仓库
# 语法: docker push 宿主机IP:5000/jdk1.8 
docker push 192.168.12.132:5000/jdk1.8

# 4、输入网址查看仓库效果

20.3 从私有仓库拉取镜像

若是在私有仓库所在的服务器上去拉取镜像;那么直接执行如下命令:

# 因为私有仓库所在的服务器上已经存在相关镜像;所以先删除;请指定镜像名,不是id 
# 语法: docker rmi 服务器ip:5000/jdk1.8
docker rmi 192.168.12.132:5000/jdk1.8

# 拉取镜像 
# 语法: docker pull 服务器ip:5000/jdk1.8
docker pull 192.168.12.132:5000/jdk1.8

#可以通过如下命令查看 docker 的信息;了解到私有仓库地址 
docker info

21、总结

1)Docker概念

​ 1.1 Docker是Go语言写的开源的容器引擎。

​ 1.2 Docker 比 VMWare技术更加 小、快、移植方便。

2)Docker命令(重点)

​ 2.1 Docker镜像命令

​ docker images: 查看本地所有镜像

​ docker search: 到中央仓库搜素镜像

​ docker pull : 拉取镜像

​ docker rmi: 删除本地镜像

​ 2.2 Docker容器命令

​ docker ps -a/-l : 查看容器的状态

​ docker run -it / -di / -v:创建交互式/守护式容器 ,同时挂载文件/目录

​ docker start/stop/restart :启动/停止/重启容器

​ docker rm :删除容器

​ docker inspect:查看容器的内部IP

​ docker cp:在宿主机和容器之间拷贝文件

​ 2.3 使用Docker安装mysql、tomcat、nginx完成spirngboot+vueJS项目部署

3)了解Docker高级用法

​ 3.1 容器的备份与移植

​ 3.2 Dockerfile制作一个Docker镜像

​ 3.3 搭建企业内部的Docker私服

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