封绝的世界

docker学习笔记

docker简介

after解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

比较Docker和传统虚拟化方式的不同之处:

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
  • 容器内的应用进程直接运行于宿主的内核(Linux内核),容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
  • 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

docker官网:http://www.docker.com
Docker Hub官网: https://hub.docker.com FQ问题

image

docker组成

Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。相当于容器的“源代码”,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例,可以把容器看做是一个简易版的 Linux 环境。
仓库(Repository)是集中存放镜像文件的场所。

安装步骤

  1. centos7下载地址:https://docs.docker.com/engine/install/centos/ 配置好网络VMnet8 NAT模式子网和本机相同,最好静态IP,将主机虚拟适配器连接到网络勾选上就可以互ping通。
  2. yum -y install gcc 和 yum -y install gcc-c++ 和 yum install -y yum-utils
  3. 设置stable镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 更新yum软件包索引 yum makecache fast
  5. 安装DOCKER CE yum -y install docker-ce docker-ce-cli containerd.io
  6. systemctl start docker 和 开机启动 systemctl enable docker

阿里云镜像加速

Docker容器命令

docker search
docker pull
docker (-it) (-d) run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker ps [OPTIONS]
docker stop $(docker ps -q)
两种退出方式:

  1. exit run进去容器,exit退出,容器停止
  2. ctrl+p+q run进去容器,ctrl+p+q退出,容器不停止
    两种进入方式:
  3. docker exec -it 容器ID bashShell exec 是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。
  4. docker attach 容器ID attach 直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。

从容器内拷贝文件到主机上 docker cp 容器ID:容器内路径 目的主机路径
导入和导出容器 导出容器的内容留作为一个tar归档文件 docker export 容器ID > 文件名.tar
import 从tar包中的内容创建一个新的文件系统再导入为镜像 cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
docker rm (-f) 容器ID
查看容器日志 docker logs 容器ID 可以通过这个排查容器启动失败原因等等
查看容器内运行的进程 docker top 容器ID
查看容器内部细节 docker inspect 容器ID
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

本地镜像发布到阿里云 但只能单人使用

本地镜像发布到私有库

  1. docker pull registry
  2. docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
  3. curl验证私服库上有什么镜像 curl -XGET http://192.168.111.162:5000/v2/_catalog
  4. docker tag 镜像:Tag Host:Port/Repository:Tag 例如docker tag zzyyubuntu:1.2 192.168.111.162:5000/zzyyubuntu:1.2
  5. 修改配置文件使之支持http "insecure-registries": ["192.168.111.162:5000"]
  6. docker push 192.168.111.162:5000/zzyyubuntu:1.2
  7. docker pull 192.168.111.162:5000/zzyyubuntu:1.2

Docker容器数据卷

--privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 默认:rw 读写(默认) 只读ro
容器2继承容器1的卷规则 docker run -it --privileged=true --volumes-from 父类 --name 子类 镜像

安装常用软件

  1. tomcat
    可能没有映射端口或者没有关闭防火墙
    查看webapps 文件夹查看为空 把webapps.dist目录换成webapps
  2. mysql
docker run -d -p 3306:3306 --privileged=true \
-v /zzyyuse/mysql/log:/var/log/mysql \
-v /zzyyuse/mysql/data:/var/lib/mysql \
-v /zzyyuse/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:5.7

docker run -d -p 3307:3306 --privileged=true \
-v /zzyyuse/mysql8.0/log:/var/log/mysql \
-v /zzyyuse/mysql8.0/data:/var/lib/mysql \
-v /zzyyuse/mysql8.0/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456  --name mysql1 mysql:8.0

conf文件夹下新建my.cnf

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
  1. redis
docker run  -p 6379:6379 --name myr3 --privileged=true \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf

允许redis外地连接 必须注释掉 # bind 127.0.0.1
daemonize no将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
开启redis数据持久化 appendonly yes 可选

posted @ 2025-08-30 07:08  天边的云云  阅读(4)  评论(0)    收藏  举报