Docker入门学习

本文详细介绍了Docker的基本概念、组件、安装步骤、常用命令,包括如何在Centos7.x和Ubuntu上安装,以及如何进行应用部署、迁移与备份、使用Dockerfile构建镜像和搭建私有仓库。通过实例操作,帮助读者掌握Docker的核心功能。
摘要由CSDN通过智能技术生成

何为Docker

一种操作系统虚拟化解决方案, 相比于传统的虚拟机, Docker是轻量级的, 简单的, 便捷的, 启动速度更快, 占用体积更小. 传统虚拟机的虚拟化是从硬件上实现的(连硬件都能虚拟化), 而Docker是从操作系统层面上实现, 因此Docker在Linux上使用.

Docker组件

  • Docker镜像与容器
    镜像: 类似于操作系统光盘, 可以将其看作是类
    容器: 使用进行虚拟化出来的"操作系统", 可以看做是对象
    Docker使用一个镜像可以虚拟化出多个相同的容器
  • Docker客户端与服务端
    Docker使用C/S架构, 主机可以运行客户端与服务端, 也能使用客户端远程连接到另一台主机的服务端, Docker服务端管理每一个Docker容器

Docker安装(使用Centos7.x或者Ubuntu安装)

安装指令

(1) yum 包更新到最新
(2) 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
(3) 设置yum源为阿里云
(4) 安装docker
(5) 安装后查看docker版本

sudo yum update
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo 
sudo yum install docker-ce 
docker -v

配置镜像服务提供商(速度很快, 用官方的太慢了)

(1) 创建配置文件

vim /etc/docker/daemon.json

(2) 编辑配置文件, 添加如下内容

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

Docker启动与停止

启动Docker

systemctl start docker

停止Docker

systemctl stop docker

重启Docker

systemctl restart docker

查看Docker状态

systemctl status docker

设置Docker服务开机启动

systemctl enable docker

查看Docker帮助文档

docker --help

Docker常用命令

镜像相关操作

查看当前有本机上下载了哪些镜像(新装的Docker没有存在镜像)

docker images

在这里插入图片描述

	REPOSITORY:镜像名称
	TAG:镜像标签
	IMAGE ID:镜像ID
	CREATED:镜像的创建日期(不是获取该镜像的日期)
	SIZE:镜像大小
	这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

从网络中搜索镜像

docker search 镜像名称

在这里插入图片描述

	NAME:仓库名称
	DESCRIPTION:镜像描述
	STARS:用户评价,反应一个镜像的受欢迎程度
	OFFICIAL:是否官方
	AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

下载刚才查找到的镜像

docker pull 镜像名称
例如: docker pull consol/centos-xfce-vnc

根据镜像ID删除镜像

docker rmi 镜像id
注: rmi => remove image

删除所有镜像

docker rmi `docker images -q`
注: 这个语法有点像编写shell脚本

容器相关指令

创建及退出容器

1.创建就使用(创建容器后, 就会进入该容器, 当退出该容器, 该容器就停止运行)
docker run -it --name=容器名 镜像名:标签 /bin/bash
例如:docker run -it --name=mycentos centos:latest /bin/bash
注: 镜像名称, 标签不知道, 使用前面的docker images命令就能查看
docker run: 创建容器
-i: 运行容器
-t: 创建容器后, 就能通过后面写的/bin/bash伪终端立即进入容器
--name: 容器名称(自定义)

2.创建可以在后台运行的容器(当退出该容器, 该容器依旧在后台运行)
docker run -di --name=容器名称 镜像名称:标签
-d: 当前容器能在后台运行

3.进入后台运行的容器
docker exec -it 容器名称(或者容器ID) /bin/bash

4.退出容器(在容器中执行如下指令)
exit

查看正在运行的容器

docker ps

查看所有容器(包含正在运行, 没有运行的)

docker ps -a

停止与启动容器

docker stop 容器名(或容器ID)
docker start 容器名(或容器ID)

注: 使用docker run -it创建的普通容器使用start就能变为后台容器, 进入后台容器依旧使用docker exec -it…

文件拷贝

1.将本机文件拷贝被容器中
docker cp 需要拷贝的文件 容器名:保存在容器中的哪个位置
2.将容器中文件拷贝到主机中
docker cp 容器名称: 容器目录 需要拷贝的文件
	拷贝出来的位置就放置在当前所在目录

容器与主机实现共享目录(需要在创建容器的时候就设置)

docker run -di -v 主机目录:容器目录 --name=容器名 镜像名:标签
-v: 设置主机目录与容器目录的映射关系
例如: docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
注: 设置共享目录, 需要提前设置目录的访问权限, 避免因为访问权限导致设置失败
目录共享, 二者修改都会相互影响

查看容器信息(ip等)

docker inspect 容器名(或容器ID)

删除容器

docker rm 容器名(或容器ID)

应用部署(案例实践)

1.MySQL部署

(1) 下载MySQL镜像
docker pull centos/mysql-57-centos7
(2) 创建容器, 设置端口映射关系
docker run -di --name=my_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p: 设置容器中端口与主机端口的映射关系
	将容器中3306端口映射到主机的33306端口, 在后面的登录中就使用33306端口登录
-e: 设置容器中mysql的密码为123456
使用msyql客户端登录容器中的mysql服务
mysql -h 0.0.0.0 -u root -P 33306 -p

2.tomcat部署

(1) 下载tomcat镜像
docker pull tomcat:7-jre7
	Tomcat7, jre环境7
(2)创建容器, 设置端口映射关系, 目录共享
docker run -di --name=mytomcat -p 9000:8080 -v /home:/usr/local/tomcat/webapps tomcat:7-jre7

3.Nginx部署

(1) 下载Nginx镜像
docker pull nginx
(2) 创建容器, 设置端口映射关系
docker run -di --name=mynginx -p 80:80 nginx

迁移与备份

容器保存为镜像

docker commit 容器名 镜像名
将我们当前的容器保存为镜像(镜像名自定义)

镜像备份

docker save -o 新镜像名.tar 镜像名
将原有的镜像保存为.tar文件

镜像恢复

docker load -i 镜像名.tar
将镜像的压缩包重新恢复变为镜像(最后使用docker images命令查看是否恢复成功)

使用Dockerfile构建镜像

将构建镜像过程使用的命令放入Dockerfile文件中, 使用该脚本文件创建镜像
Dockerfile中常使用的命令

		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 设置工作目录

使用Dockerfile创建jdk1.8镜像(案例)

(1) 创建目录
	mkdir –p /usr/local/dockerjdk8
(2) 下载jdk-8u171-linux-x64.tar.gz放入主机 /usr/local/dockerjdk8 目录中
(3) 创建Dockerfile文件
	vim /usr/local/dockerjdk8/Dockerfile
	#依赖镜像名称和ID 
	FROM centos:7 
	#指定镜像创建者信息 
	MAINTAINER author:gg 
	#切换工作目录 
	WORKDIR /usr
	RUN mkdir /usr/local/java 
	#ADD 是相对路径jar,把java添加到容器中 
	ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ 
	#配置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' .
	注: jdk1.8代表镜像名, 后面还有一个空格, 点(不要漏写, 点代表当前目录)
(5) 查看镜像是否构建成功
	docker images

Docker搭建私有仓库

下载私有仓库镜像, 并启动

docker pull registry
docker run -di --name=registry -p 5000:5000 registry

打开浏览器 输入地址http://主机ip:5000/v2/_catalog看到 {“repositories”:[]} 表示私有仓库
搭建成功并且内容为空

修改/etc/docker/daemon.json配置文件, 让docker信任该域名下的私有仓库

vi /etc/docker/daemon.json
{"insecure-registries":["主机ip:5000"]}

重启Docker服务, 并启动registry镜像

systemctl restart docker
docker start registry

上传刚才创建的jdk1.8镜像到私有仓库中

docker push 主机ip:5000/jdk1.8

总结

经过此次操作, 对Docker有了一个基本的认识, 记住Docker常用命令, 多操作几遍就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值