Docker学习篇—安装使用

目录

1. Docker简介

2. 环境

3. 下载安装Docker

4. 启动Docker

5. 验证安装是否成功 

6. 常用docker命令

7. 镜像演示

8. 构建镜像并发布自己的项目(演示)


1. Docker简介

Docker安装所需要CentOS7以上才可以安装

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker包括三个基本概念:

  • 仓库(Repository):就说运行java web项目,首先需要有运行环境,而这个容器就是我们的运行环境
  • 镜像(Image):我把镜像理解为我们的操作系统,这个操作系统(镜像)运行起来后才会有我们程序运行的环境(容器)
  • 容器(Container):这个仓库也就是我们下载操作系统(镜像)的地方,里面有各式各样的操作系统(镜像),redis,tomcat的镜像等

 注:Docker Hub是Docker公司提供的一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。

2. 环境

64位CentOS Linux release 7.2.1511 (Core)

3. 下载安装Docker

1) 把yum包更新到最新(网上说yum包更新到最新,提升对docker的下载速度)

[root@localhost ~]# yum update

2) 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

3) 设置yum源

[root@localhost ~]# yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

4) 查看所有仓库中所有docker版本,并选择特定版本安装

[root@localhost ~]# yum list docker-ce --showduplicates | sort -r

Docker学习篇—安装使用_第1张图片

5) 安装Docker,命令:yum install docker-ce-版本号,我选的是18.03.1.ce,如下

[root@localhost ~]# yum install docker-ce-18.03.1.ce

4. 启动Docker

命令:systemctl start docker,然后加入开机启动,如下:

# sudo systemctl start docker

# sudo systemctl enable docker

5. 验证安装是否成功 

有client和service两部分表示docker安装启动都成功了

# docker version

Docker学习篇—安装使用_第2张图片

6. 常用docker命令

docker pull 镜像地址     拉取镜像

docker ps             查看当前正在运行的容器

docker ps -a         查看所有容器的状态

docker start/stop id/name     启动/停止某个容器

docker attach id                    进入某个容器(使用exit退出后容器也跟着停止运行)

docker exec -ti id                  启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行

docker images                      查看本地镜像

docker rm id/name                删除某个容器

docker rmi id/name               删除某个镜像

docker run --name test -ti ubuntu /bin/bash  复制ubuntu容器并且重命名为test且运行,然后以伪终端交互式方式进入容器,运行bash

docker build -t soar/centos:7.1 .  通过当前目录下的Dockerfile创建一个名为soar/centos的镜像,镜像版本7.1

docker run -d -p 2222:22 --name test  soar/centos:7.1   以镜像soar/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变

其中:-d:镜像在后台运行   -p指定本机与容器内部交互的端口   -P是随机开放一个端口与容器内部ID映射

7. 镜像演示

1) 拉取镜像

# docker pull registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27

Docker学习篇—安装使用_第3张图片

2) 查看所有镜像

# docker images

3) 运行镜像

# docker run -d -p 80:8080 registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27 

4) 查看tomcat是否成功启动

浏览器查看: 172.20.32.239

Docker学习篇—安装使用_第4张图片

5) 查看正在运行的容器

6) 进入到容器内部 

docker exec -it 容器ID  bash   (下面是我的容器ID 每个容器ID是不一样的 使用docker ps 查看一下)

# docker exec -it 34db8b314395 bash

Docker学习篇—安装使用_第5张图片

退出容器:输入exit

7) 文件传输

如果获取容器内tomcat的日志文件,怎么做呢?   

 容器 -----> 本机 

获取镜像ID全称

# docker inspect 34db8b314395 | grep Id

docker cp  ID全称:容器文件路径 本地路径

docker cp 34db8b3143959526d59b8792de2018a7bc05c0a409d2b322076359cf67a751a8:/usr/tomcat/logs/catalina.out /usr/local/Docker/catalina.out


 

本机 -----> 容器

docker cp 本地文件路径 ID全称:容器路径

docker cp  /usr/local/Docker/catalina.out 34db8b3143959526d59b8792de2018a7bc05c0a409d2b322076359cf67a751a8:/usr/tomcat/logs/catalina.out

8) 停止容器

docker stop 容器ID

# docker stop 34db8b314395

此时Tomcat网站已经无法访问。

9) 删除容器

docker rm 容器id

注意: 镜像启动后会产生容器,如果不先删除容器,镜像是无法删除的

10) 删除镜像

docker rmi 镜像id

8. 构建镜像并发布自己的项目(演示)

1) 在/usr/local下创建Docker文件夹(随便的一个空的文件夹)

# cd /usr/local

# mkdir Docker

# cd Docker

2) 上传准备好的war包到/usr/local/Docker目录下

3) 创建Dockerfile文件

# touch Dockerfile

4) 编辑Dockerfile文件

# vim Dockerfile

添加如下内容

#该镜像的父镜像为tomcat镜像,这样我们就有了tomcat的环境
from registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
 
#复制当前文件夹下的war包到镜像中tomcat的webapps目录
COPY TestDocker.war /usr/tomcat/webapps
 
#去除容器内部中文乱码问题
ENV LANG C.UTF-8

 5) 构建镜像(还是在Docker文件夹 也就是/usr/local/Docker目录)

docker build -t 镜像名称(镜像名称必须为小写):镜像版本  .

注意:后面的点要加上, 这个代表Dockerfile的所在目录

docker build -t docker-test:latest .

Docker学习篇—安装使用_第6张图片

使用docker images 查看一下构建的镜像

#  docker images

运行镜像:

docker run -d -p 80:8080 docker-test

Docker学习篇—安装使用_第7张图片

浏览器输入查看: http://172.20.32.239/TestDocker/Docker/hello

Docker学习篇—安装使用_第8张图片

应用场景:

最近总是频繁的在新服务器发布项目, 每次发布都需要布置项目所需要的环境特别麻烦,而且还有一台机器需要两个环境的状况

例如:发布java web 项目而言,需要下载安装jdk 和tomcat ,安装Docker后只需要几个命令就轻松搞定,还有两个环境的问题,我们有一台服务器需要发布两个java web项目 而有一个项目必须使用jdk1.7 而另一个必须用jdk1.8,这个使用Docker都可以轻松解决。

针对以上提到的,每个项目都需要有自己的运行环境,我们可以为每个项目都配置一个属于自己的镜像。


编写不易,如果有帮助到您,喜欢点赞! 

你可能感兴趣的:(Docker)