#######1.Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
#######2.安装:
-2.1安装的前提:
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。使用命令 uname -r 查看当前操作系统内核,我当前系统内核版本是3.10.0-957.el7.x86_64。
[root@localhost byp]# uname -r 3.10.0-957.el7.x86_64
-2.2配置yum源
由于安装centos后的默认yum源为centos的官方地址,所以在国内使用很慢甚至无法访问,所以一般的做法都是把默认的yum源替换成aliyun的yum源或者163等国内的yum源(下文介绍如何配置)。
但是以上的方法都是需要网络的,当没有网络的时候就无法使用了,所以还有一个常用的方法就是用Centos的iso镜像搭建本地yum源,这样安装软件的速度就会飞快,缺点是可能有些包没有。
我这里提供在线联网安装网易的和阿里的,二者选其一即可。
1. 备份
mv /etc/yum.repos.d/CentOs-Base.repo /etc/yum.repos.d/CentOs-Base.repo.bak
2. 配置yum源
网易云:wget -O /etc/yum.repos.d/CentOS-Base.repo [<u>http://mirrors.163.com/.help/CentOS7-Base-163.repo</u>](http://mirrors.163.com/.help/CentOS7-Base-163.repo)
阿里云yum源:
cd /etc/yum.repos.d/
wget [<u>http://mirrors.aliyun.com/repo/Centos-7.repo</u>](http://mirrors.aliyun.com/repo/Centos-7.repo)
mv Centos-7.repo CentOs-Base.repo
3. 更新yum,生成缓存
yum clean all
yum makecache
-2.3安装:
a.安装yum 管理工具
# yum install -y yum-utils device-mapper-persistent-data lvm2
b.添加 docker yum 源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
c.安装docker-ce
yum -y install docker-ce
启动docker并设置为开启自启动
systemctl start docker
systemctl enable docker
查看docker版本
docker version
#######3.拉取镜像:
-3.1拉取mysql5.7镜像
[root@localhost byp]# docker search mysql
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/mysql MySQL is a widely used, open-source relati... 7906 [OK]
docker.io docker.io/mariadb MariaDB is a community-developed fork of M... 2633 [OK]
docker.io docker.io/mysql/mysql-server Optimized MySQL Server Docker images. Crea... 595 [OK]
docker.io docker.io/percona Percona Server is a fork of the MySQL rela... 420 [OK]
docker.io docker.io/zabbix/zabbix-server-mysql Zabbix Server with MySQL database support 173 [OK]
docker.io docker.io/hypriot/rpi-mysql RPi-compatible Docker Image with Mysql 110
docker.io docker.io/zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 91 [OK]
docker.io docker.io/centurylink/mysql Image containing mysql. Optimized to be li... 60 [OK]
docker.io docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 49 [OK]
docker.io docker.io/centos/mysql-57-centos7 MySQL 5.7 SQL database server 48
docker.io docker.io/mysql/mysql-cluster Experimental MySQL Cluster Docker images. ... 41
docker.io docker.io/tutum/mysql Base docker image to run a MySQL database ... 31
docker.io docker.io/bitnami/mysql Bitnami MySQL Docker Image 25 [OK]
docker.io docker.io/schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic back... 25 [OK]
docker.io docker.io/zabbix/zabbix-web-apache-mysql Zabbix frontend based on Apache web-server... 24 [OK]
docker.io docker.io/linuxserver/mysql A Mysql container, brought to you by Linux... 20
docker.io docker.io/zabbix/zabbix-proxy-mysql Zabbix proxy with MySQL database support 20 [OK]
docker.io docker.io/centos/mysql-56-centos7 MySQL 5.6 SQL database server 13
docker.io docker.io/circleci/mysql MySQL is a widely used, open-source relati... 11
docker.io docker.io/mysql/mysql-router MySQL Router provides transparent routing ... 8
docker.io docker.io/openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 ima... 6
docker.io docker.io/jelastic/mysql An image of the MySQL database server main... 1
docker.io docker.io/ansibleplaybookbundle/mysql-apb An APB which deploys RHSCL MySQL 0 [OK]
docker.io docker.io/cloudposse/mysql Improved `mysql` service with support for ... 0 [OK]
docker.io docker.io/widdpim/mysql-client Dockerized MySQL Client (5.7) including Cu... 0 [OK]
[root@localhost byp]#
-3.2Docker拉取镜像到本地
docker pull xxxx:tag
-3.3 mysql5.7只需要。
docker pull mysql:5.7
-3.4拉取镜像后,我们执行docker images 就可以看到本地所有镜像信息
[root@localhost byp]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker latest 5621f7fea13f 25 hours ago 122 MB
springboot latest 5621f7fea13f 25 hours ago 122 MB
docker.io/openjdk 8-jdk-alpine e9ea51023687 4 days ago 105 MB
docker.io/maven latest b171afb239f6 6 days ago 831 MB
docker.io/mysql 5.7 ee7cbd482336 7 days ago 372 MB
[root@localhost byp]#
-3.5启动容器
拉取镜像后,我们试着启动一下mysql
docker run --name="dockermysql" -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
Docker run 启动容器 --name 指定容器名字 -p 这里是小写的p指定端口映射,第一个3306是宿主机的端口,第二个是容器的端口 -e 指定mysql用户名root密码是123456 -d 后台运行 后面mysql:5.7 镜像名:tag 也可以是imagesId 运行后,我们可以看到docker给我们container随机生成了一个容器id
-3.6启动MySQL
docker ps 查看正在运行的容器,找到dockermysql对应的containerId docker exec -it 7a01680e7bca /bin/bash 进入容器 mysql -uroot -p 回车输入密码,可以看到我们已经成功安装了mysql
-3.7远程验证
我们使用navicat远程连接一下mysql
image.png
#######4.Dockerfile
FROM
格式为 FROM <image>或FROM <image>:<tag>。
ENV
格式为 ENV <key> <value>。 指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。
MAINTAINER
格式为 MAINTAINER <name>,指定维护者信息。
WORKDIR
格式为 WORKDIR /usr/local。
为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。
RUN
格式为 RUN <command> 或 RUN ["executable", "param1", "param2"]。
COPY
格式为 COPY <src> <dest>。
复制本地主机的 <src>(为 Dockerfile 所在目录的相对路径)到容器中的 <dest>。当使用本地目录为源目录时,推荐使用 COPY。
ADD
格式为 ADD <src> <dest>。
该命令将复制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。
EXPOSE
格式为EXPOSE PORT
CMD
支持三种格式
CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;
CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;
ENTRYPOINT
两种格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2(shell中执行)。
注意:CMD有多个时候,CMD最后一个有效,其他被覆盖,ENTRYPOINT 则是以追加的形式。我们这里讲解的是常用命令,不常用的还有VOLUME,USER,ONBUILD...
-4.1镜像构建
docker build -t springboot
[root@localhost byp]# docker build -t springboot .
Sending build context to Docker daemon 18.4 MB
Step 1/4 : FROM openjdk:8-jdk-alpine
---> e9ea51023687
Step 2/4 : VOLUME /tmp
---> Using cache
---> d34a8e2f06b0
Step 3/4 : ADD demo-0.0.1-SNAPSHOT.jar app.jar
---> Using cache
---> 18bf476992e2
Step 4/4 : ENTRYPOINT java -jar /app.jar
---> Using cache
---> 5621f7fea13f
Successfully built 5621f7fea13f
-t tag简写 打标签+版本号 注意我后面有个点,代表当前路径。默认会去找当前的Dockerfile,如果你当前的不叫Dockerfile,你可以指定-f参数指定Dockerfile文件名。
-4.2镜像制作完成后,我们启动镜像
[root@localhost byp]# docker run --name="lalala" -d -p 9999:8080 springboot
351105ab4e35d33560cdd4ff8ee5120dd00acdad79e3874b0c1c9addd5d73c63
-4.3查看镜像
[root@localhost byp]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker latest 5621f7fea13f 25 hours ago 122 MB
springboot latest 5621f7fea13f 25 hours ago 122 MB
docker.io/openjdk 8-jdk-alpine e9ea51023687 4 days ago 105 MB
docker.io/maven latest b171afb239f6 6 days ago 831 MB
docker.io/mysql 5.7 ee7cbd482336 7 days ago 372 MB
image.png
页面效果
image.png
网友评论