docker入门

docker VS 虚拟机

  • 虚拟机虚拟自己的硬件,运行操作系统,app运行在自己内核上
  • 容器里的app直接运行在主机的内核上,有更少的抽象层
  • 容器彼此之间隔离,拥有独立的文件系统

docker的概念

  • 仓库:存放镜像的仓库
  • 镜像:类似于java的类,可以由镜像创建实例化的容器
  • 容器:可运行若干应用,可看做事小型的linux

docker run和docker的原理

ducker run

先在本地寻找镜像,没有找到就到仓库找,仓库找到会下载到本地运行

docker

docker是client-server架构,客户端利用socket连接服务器,守护进程会负责创建、销毁容器

docker常用命令

镜像命令

docker  images #查看镜像
				-a #全部
				-q #只显示id
				-aq #显示所有id
docker  info #查看docker详细信息
docker  search #查找进行
				--filter=STARS=500 #只要star=500及以上
docker  pull #拉去镜像
docker rmi #删除镜像
				-f 
docker rmi -f $(docker images -aq) #全部删除

容器命令

docker run [容器名]#创建容器实例
docker ps #查看正在运行的容器
					-a #查看所有容器包含之前运行的
					-q #值查看容器id
					-it /bin/bash  #交互运行
					-d #后台运行
docker start [容器id] #启动容奇
docker restart#重启容器
docker rm #删除容器
					-f#强制删除
docker stop#停止容器
docker kill#强制停止
#删除所有容器
docker ps -aq|args docker rm

常见命令

#查看日志
docker logs -tf --tail [条目数] [ID]
#重看容器内的进程
docker top [ID]
#查看容器元数据
docker inspect [ID]
#进入容器
docker exec -it [ID] #新开一个终端
docker attach [ID]

练习

部署nginx

docker run -d --name nginx01 -p80:80 nginx

部署ES

docker run -d --name elasticsearch \
  -p 9200:9200 -p 9300:9300 \
  -e ES_JAVA_OPTS="Xms64m Xmx512m" \
  docker.elastic.co/elasticsearch/elasticsearch:7.14.0

部署tomcat

docker run -d --name tomcat -p8080:8080 tomcat

联合文件系统

将文件系统分层,不同容器可以共用相同文件,提升复用率

commit文件

docker commit -m="1st test" -a="manubu" 81c1de1cfe8d  manubu/tomcat:1.0

数据卷

用于容器持久化数据到宿主机,容器之间的内存共享

指定方式

#删除容器之后,数据仍然保存在宿主机
docker run -it -v /home/ceshi:/home centos /bin/bash

具名方式

#具名方式创建 
docker run -d -v juming:/home centos
#查看具体目录
docker inspect 8c53929f6393c01f76ddc8d4befa4b03bef93da22a76d9353eae3c5f1d5b79e7
#结果
"Mounts": [
            {
                "Type": "volume",
                "Name": "juming",
                "Source": "/var/lib/docker/volumes/juming/_data",
                "Destination": "/home",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
 ],

匿名方式

docker run -it -v /home centos /bin/bash

容器之间

#常见匿名挂载
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d -v /home -v /var/lib/mysql  mysql:8.0
#共享匿名挂载,只有所用共享容器被清除,数据才会被清除,
docker run --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d -volumes-from mysql01  mysql:8.0

dockerfile

常见命令

1. `FROM <base_image>`:指定基础镜像,所有其他命令都基于这个基础镜像构建 

2. `MAINTAINER <author>`:指定镜像的作者 

3. `RUN <command>`:在镜像中运行指定的命令,用于安装软件、更新包等操作。
   
4. `COPY <src> <dest>`:将本地文件或目录复制到镜像中。
   - 例如:`COPY app.py /app/`

5. `ADD <src> <dest>`:类似于`COPY`命令,但还支持从URL下载并解压文件。
   - 例如:`ADD https://example.com/archive.tar.gz /`

6. `WORKDIR <path>`:设置工作目录,在后续命令中执行操作的默认路径。
   - 例如:`WORKDIR /app`

7. `EXPOSE <port>`:声明容器运行时将会监听的端口,但并不会自动映射到主机端口。
   - 例如:`EXPOSE 80`

8. `ENV <key> <value>`:设置环境变量,用于在容器内部配置。
   - 例如:`ENV DB_HOST=localhost`

10. `CMD ["executable", "param1", "param2"]`:设置容器启动时的默认执行命令,如果在运行容器时没有指定命令,则会执行这个命令。
    - 例如:`CMD ["python", "app.py"]`

11. `ENTRYPOINT ["executable", "param1", "param2"]`:类似于`CMD`,但可以向其后追加,而不会覆盖。
   

12. `VOLUME ["/data"]`:声明一个挂载点,允许容器数据持久化存储,但不会将主机上的数据复制到镜像。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值