怀念夏天 发表于 2024-10-13 20:33:40

菜鸟入门Docker

初始Docker
Docker的概念
Docker的用途
DOcke的安装
Docker架构
配置Docker镜像加快器
Docker常用下令
Docker服务相关的下令。
Docker镜像相关的下令
Docker容器相关的下令
容器的数据卷
数据卷的概念和作用
配置数据卷
Docker应用摆设
Docker摆设mysql
Docker摆设tomcat
Docker摆设nginx
搜索nginx镜像
拉取nginx镜像
创建容器,设置端口映射、目录映射
利用外部机器访问nginx
Redis摆设
初始Docker

Docker的概念

Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、摆设、运行等生命周期的管理,利用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
https://i-blog.csdnimg.cn/direct/a789f05d71b24265bd3018490d275c7c.png
Docker的用途

这里引用网上某博主的部分内容,Docker 的主要用途,现在有三大类。
(1)提供一次性的环境。比如,当地测试他人的软件、持续集成的时候提供单位测试和构建的环境。
(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模仿出微服务架构。
DOcke的安装

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作体系上,本课程基于CentOS7安装Docker。官网: https://www.docker.com
   # 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 ,出现输入的界面都按y  ce社区版---学习够了,   ee版企业版收费
yum install -y docker-ce
# 5、查看docker版本,验证是否验证乐成
docker -v
Docker架构

https://i-blog.csdnimg.cn/direct/c0e9cfd877fd4153ba6525f26933c481.png


[*] Docker 镜像(Image)就是一个==只读==的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建许多容器。
[*] 容器(Container) :Docker 利用容器(Container)独立运行的一个或一组应用。就像是Java中的类和实例对象一样,镜像是静态的界说,容器是镜像运行时的实体。容器为镜像提供了一个尺度的和隔离的运行环境,它可以被启动、开始、制止、删除。每个容器都是相互隔离的、包管安全的平台
[*] 仓库(Repository)是集中存放镜像文件的场所。
类似于
Maven仓库,存放各种jar包的地方;
gitee仓库,存放各种git项目的地方;
Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
仓库分为公开仓库(Public)和私有仓库(Private)两种情势。
最大的公开仓库是 Docker Hub(https://hub.docker.com/),
存放了数量巨大的镜像供用户下载。国内的公开仓库包罗阿里云 、网易云等
配置Docker镜像加快器

默认环境下,将来从docker hub (https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加快器:
   sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker常用下令

Docker服务相关的下令。

https://i-blog.csdnimg.cn/direct/90e3d77ec78e42acb34c00b375e93e3a.png


[*]启动docker服务 systemctl start docker
[*]制止docker服务 systemctl stop docker 重启docker服务 systemctl restart docker
[*]查看docker服务状态 systemctl status docker
[*]开机启动dockeh服务 systemctl enable docker
[*]查看docker下令资助文档: docker 具体下令 --help
Docker镜像相关的下令

https://i-blog.csdnimg.cn/direct/a40efbc389c94a65ad7eea8c5b8a93fe.png
查看镜像:
   docker images
https://i-blog.csdnimg.cn/direct/08bc2ae769074dbc8258b43ef1506dbe.png
搜索镜像
   docker search redis
https://i-blog.csdnimg.cn/direct/acbb5951c4584733aef599e64835c1d6.png
拉取镜像
   docker pull redis:6.0  冒号后跟的是版本号,如果不跟默认latest
删除镜像---当地仓库
   根据id删除
docker rmi id
根据名称:版本号删除
docker rmi redis:6.0
-------------------------------------------------------
删除没有开启容器的镜像
删除所有镜像
docker images q --查询所有镜像的id
docker rmi (docker images q)
Docker容器相关的下令

https://i-blog.csdnimg.cn/direct/1289603f3cdc48bb839c2998293340cb.png
1.创建容器
https://i-blog.csdnimg.cn/direct/a85e289c25234765a904f8bb49e66a96.png
2.查看容器
   docker ps --查看正在运行的容器
docker ps -a --查看所有容器
3.创建一个容器但不进入容器
https://i-blog.csdnimg.cn/direct/675045d632474086bb005a2c49530d95.png
4.进入正在运行的指定容器内
https://i-blog.csdnimg.cn/direct/a7972cfbf71945a7b3e187c5157683a4.png
这时在利用exit退出容器,则不会关闭容器
5.启动/制止/删除容器
   docker start 容器名
docker stop 容器名
docker rm 容器id #只删除未启动的容器
docker rm -f 容器id||名称 #删除任何容器
docker ps -aq #查看所有容器的id
docker rm docker ps -aq
6.查看容器信息
   docker inspect 容器名称
9.输出当前容器日志信息---知道容器启动失败的缘故原由
   docker logs 容器id
容器的数据卷

数据卷的概念和作用

https://i-blog.csdnimg.cn/direct/d151e0e6d13c411bbdcf3f799177615e.png
配置数据卷

https://i-blog.csdnimg.cn/direct/2fd855e0e2764e02894881e2aedc2d27.png
演示:
   1. 宿主机容器卷中的内容发生改变对应容器内的目录也跟着改变
2. 容器内的目录发生改变宿主机容器卷内的内容也跟着厘革
3. 删除容器后,再次开启容器并挂载容器卷。数据依然存在      
4. 一个容器挂载多个容器卷                  
5. 多个容器挂载一个容器卷
    注意: 如果数据卷是文件,则必须在宿主机中创建该文件,否则会自动被认为文件夹创建。
Docker应用摆设

Docker摆设mysql

搜索mysql镜像
   docker search mysql
拉取mysql镜像
   docker pull mysql
https://i-blog.csdnimg.cn/direct/9a081972decd42f18a333dddd03f4d70.png
创建容器,设置端口映射、目录映射
   docker run -d --name=m01  -p 3306:3306 -v /ykq/mysql/log:/var/log/mysql \
-v /ykq/mysql/data:/var/lib/mysql -v /ykq/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.2.0


[*] 参数说明:
[*] -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。

[*] -v /ykq/mysql/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
[*] -v /ykq/mysql/log:/var/log/mysql:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
[*] -v /ykq/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
[*] -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的暗码。

https://i-blog.csdnimg.cn/direct/12402e33e97a4f75a420e6b358c2a71c.png
https://i-blog.csdnimg.cn/direct/fdeab27e296f4af0a3760010384645d1.png
   docker run --name elasticsearch -p 9200:9200 \
 -p 9300:9300 \
 -e "discovery.type=single-node" \
 -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
  -v /usr/local/data-docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
 -v /usr/local/data-docker/elasticsearch/data:/usr/share/elasticsearch/data \
 -v /usr/local/data-docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 --network es-net \
 --privileged \
 -d elasticsearch:5.6.4
Docker摆设tomcat

搜索tomcat镜像
   docker search tomcat
拉取tomcat镜像
   docker pull tomcat
创建容器,设置端口映射、目录映射
   # 在/root目录下创建tomcat目任命于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
    docker run -d --name tomcat01 \
        -v $PWD/conf:/usr/local/tomcat/conf \
        -v $PWD/webapps:/usr/local/tomcat/webapps \
        -p 8080:8080 \
        tomcat:8.5
利用外部机器访问tomcat。
https://i-blog.csdnimg.cn/direct/eb82fb880c3e4968a373fe6c889f725d.png
   docker run -dit --name tomcat8089 --restart=always \
-p 8089:8080 \
-e TZ=Asia/Shanghai \
-v /opt/docker/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:8.5
Docker摆设nginx

搜索nginx镜像

   docker search nginx
拉取nginx镜像

   docker pull nginx
创建容器,设置端口映射、目录映射

   # 在/root目录下创建nginx目任命于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf
    user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
worker_connections  1024;
}

http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" "$http_x_forwarded_for"';
access_log  /var/log/nginx/access.log  main;
sendfile        on;
#tcp_nopush     on;
keepalive_timeout  65;
#gzip  on;
include /etc/nginx/conf.d/*.conf;
}
    docker run -p 80:80 \
 -d --name nginx \
 -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
 -v /opt/nginx/html:/usr/share/nginx/html \
 nginx:latest


[*] 参数说明:

[*] -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
[*] -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
[*] -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

利用外部机器访问nginx

https://i-blog.csdnimg.cn/direct/6a90c96044254fc08a303bd1e36a9ae4.png
Redis摆设

搜索redis镜像
   docker search redis
拉取redis镜像
   docker pull redis:5.0
创建容器,设置端口映射
https://i-blog.csdnimg.cn/direct/395eaf59f1224e069551c3ddbc15b999.png
   docker run -id --name=c_redis -p 6379:6379 redis:5.0
 利用外部机器毗连redis
https://i-blog.csdnimg.cn/direct/4f379be0f2854f5393b49e4859e8d62f.png

 未完待续!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 菜鸟入门Docker