Docker基础教程

x33g5p2x  于2021-10-16 转载在 Docker  
字(4.1k)|赞(0)|评价(0)|浏览(332)

前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、初始Docker

1.1 Docker

  • Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?
  1. Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植的镜像
  2. Docker应用运行在容器中,使用沙箱机制,相互隔离
  • Docker如何解决开发、测试、生产环境有差异的问题?
  1. Docker镜像中包含完整的运行环境、包括系统柜函数库、仅依赖系统的Linux内核、因此可以在任务Linux操作系统上运行

二、安装Docker

2.1 安装

1. 先卸载旧版本
		yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
	2. 下载需要的安装包
		yum install -y yum-utils
	3. 安装 docker的阿里云镜像
		yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	4. 更新yum软件包索引
		yum makecache fast
	5. 安装docker
		yum install docker-ce docker-ce-cli containerd.io 
		yum install -y  docker-ce #ce为免费社区版
		切记:关闭防火墙,否则Docker会用到各种端口,需要我们手动一个一个取开放端口很麻烦
		#关闭防火墙    systemctl stop firewalld
		#永久关闭防火墙 systemctl disable firewalld
			
	6. 启动docker
		systemctl start docker
	7. 查看当前安装docker版本
		docker version
	8. 运行helloworld,会下载镜像
		docker run hello-world 
	9. 查询当前下载的helloworld镜像
		docker images(镜像)

2.2 卸载Docker

yum remove docker-ce docker-ce-cli containerd.io
	rm -rf /var/lib/docker
	rm -rf /var/lib/containerd

2.3 Docker命令

2.3.1 查看docker版本

  • docker version
  • docker info

三、镜像命令

镜像相当于一个类,容器相当于 类 的 实例

3.1 查看本地主机上所有的镜像

  • docker images
  • 可选项
  • docker -images -a /#查看所有的镜像 (all)
  • docker -images -q /#查看所有镜像的id (quite)

3.2 将镜像打包/将镜像压缩包解压

  • 打包镜像:docker save -o 打包名.tar 镜像名:[TAG版本]
  • 解压镜像包:docker load -i 打包名.tar

3.2 Docker镜像仓库

  • docker search 镜像名
  • 或者去网站搜索DockerHub docker的镜像仓库

3.3 下载镜像

  • docker pull 镜像名称

3.4 镜像删除

  • docker rmi -f 容器id force强制删除
  • docker rmi -f 容器id 容器id 删除多个镜像

3.5 启动容器

创建并启动容器

  • docker run [可选参数] image(镜像名) /bin/bash
  • 可选参数
  • -i 保持容器运行。通常与t同时使用
  • -d 以守护(后台)模式运行容器后台方式运行
  • -it 使用交互方式运行 进入容器查看内容
  • –name 给容器起名
  • id 创建的容器一般为守护式容器
  • -p 端口映射:将宿主机端口与容器端口进行映射,冒号左侧是宿主机端口,冒号右侧是容器端口,当访问宿主机端口即可访问到容器端口
  • bash:进入容器后执行的命令,bash是一个Linux终端交互命令

3.6 列出所有正在运行的容器

  • docker ps
  • 可选项 -a 列出当前正在运行的容器+带出历史运行过的容器

3.7 退出容器

  • exit 退出容器并停止
  • Ctrl+P+Q 容器不停止退出

3.8 删除容器

  • docker rm 容器id

3.9 启动和停止容器

这里的启动是指 启动停止了的容器

  • docker start 容器id
  • docker restart 容器id
  • docker stop 容器id
  • docker kill 容器id
  • docker pause 容器id 暂停运行的容器
  • docker pause 容器id 取消暂停运行的容器

3.10 查看日志

  • -t:时间戳
  • -f:持续输出
  • -nums 输出几条日志内容
  • docker logs -tf --tail nums 容器id

3.11 查看进程信息

  • docker top 容器id

3.12 查看容器的元数据[常用]

  • docker inspect 容器id

3.12 进入当前正在运行的容器[常用]

  • 二选一
  • docker exec -it 容器id /bin/bash /#进入容器后开启一个新的终端(退出后,容器不会关闭)
  • docker attach 容器id /#进入容器正在执行的终端,不会启动新的终端

3.13 从容器内拷贝文件到主机上

  • docker cp 容器id:文件路径 拷贝到哪里

3.14 Docker部署Nginx

1. docker pull nginx 下载NGINX
	2. docker images 查看NGINX镜像
	3. docker run -d --name nginx01 -p 宿主机端口:容器内部端口 镜像
		通过访问宿主机端口可以访问容器内部端口  映射关系
	4. 请求 curl localhost:宿主机端口

端口暴露概念

3.15 commit镜像

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

  • docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名:[TAG版本]

四、数据卷(volume)

  • 数据卷:是一个虚拟目录,指向宿主机文件系统中的某个目录

4 数据卷基础语法

docker volume [command]:
		docker volume 命令是数据卷操作,根据命令后的 command来确定下一步操作:
			create:创建一个volume
			inspect:显示一个或多个volume的信息
			ls:列出所有的volume
			prune:删除未使用的volume
			rm:删除一个或多个指定的volume

4.1 挂载数据卷

  • 方式一:直接使用命令来挂载
docker run -it -v 主机目录: 容器目录

4.2 匿名挂载

  • -v容器内路径
-P :随机映射端口
	docker run -d -P --name nginx01 -v /etc/nginx nginx

4.3 具名挂载

  • -v 卷名:容器内路径
docker run -d -P --name nginx02 -v juming-nginx:

4.4 查看卷

  • docker volume inspect 卷名

4.5 DockerFile

  • dockerfile:就是用来构建docker镜像的构建文件
  • 镜像结构:
  1. 镜像是将应用程序及需要的系统函数库、环境、配置、依赖打包而成

指令说明
FROM指定基础指令
ENV设置环境变,可在后面指令使用
COPY拷贝本地文件到镜像的指定目录
ADD添加文件
CMD容器启动命令
RUN执行Linux的shell命令,一般是安装过程的命令
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的
ENTRYPOINT镜像中应用的启动命令,容器运行时调用

4.5.1 自定义DockerFile文件

# 指定基础镜像
FROM centos:7
#添加jar包 重命名
ADD springboot.jar app.jar
#容器启动命令
CMD ["java","-jar","app.jar"]
  • 将上面的Dockerfile文件设置完毕后,再构建 dockerfile镜像
  • 构建命令:docker build -f dockerfile文件路径 -t(tag表示版本) 新的镜像名称:自定义版本 .(.表示dockerfile寻址路径)
    构建命令:docker build -t(tag表示版本) javaweb:1.0 .(.表示dockerfile在当前文件目录)
  • 基于java:8-alpine镜像,将一个Java项目构建为镜像
# 指定基础镜像
FROM java:8-alpine

# 拷贝java项目的包
COPY ./docker-demo.jar /tmp/app.jar

# 暴露端口
EXPOSE 8090

# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
  • 构建命令:docker build -t javaweb:2.0 .(.表示dockerfile在当前文件目录)
  • 运行自定义镜像: docker run --name web -p 8090:8090 -d javaweb:1.0

4.6 Compose

Docker Compose是一个编排多容器分布式部署的工具,提供命令集中管理容器化应用的完整开发周期,包括服务
构建,启动和停止。使用步骤:
  • 步骤
  1. 利用 Dockerfile 定义运行环境镜像
  2. 使用 docker-compose.yml 定义组成应用的各服务
  3. 运行 docker-compose up 启动应用
  • 安装Docker-compose
# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以
编译好的二进制包方式安装在Linux系统中。
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-
`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version
  • 卸载Docker-compose
# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

相关文章