一、Docker
1.1 简介
Docker是一个开源的应用容器引擎;
Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。
运行中的这个镜像称为容器,容器启动时非常迅速的,
1.2 Docker核心概念
docker镜像(Images): Docker镜像是用于创建Docker容器的模板。软件打包的镜像。
docker容器(Container): 容器是独立运行的一个或一组应用;镜像启动后的实例称为一个容器。
docker客户端(Client): 客户端通过命令行或者其他工具使用Docker;连接Docker主机进行操作。
docker主机(Host): 一个物理或者虚拟的机器用于执行Docker守护进程和容器;安装了Docker的机器,Docker直接安装在操作系统之上。
docker仓库: Docker仓库来保存镜像,可以理解为代码控制中的代码仓库。用来保存各种打包好的软件镜像。
使用Docker的步骤:
1)安装Docker
2)去Docker仓库找到这个软件对应的镜像;
3)使用Docker运行这个镜像,这个镜像就会生成一个Docker容器
4)对容器的启动停止就是对软件的启动停止
1.3 安装Docker
步骤:
1、检查内核版本,必须是3.10及以上
[root@localhost ~]# uname -r
2、安装Docker
[root@localhost ~]# yum install docker
3、启动Docker
[root@localhost ~]# systemctl start docker
4、将Docker服务设为开机启动
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib
/systemd/system/docker.service.[root@localhost ~]#
5、停止Docker
[root@localhost ~]# systemctl stop docker
[root@localhost ~]#
1.4 Docker常用操作
1、镜像操作
操作 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字 eg: docker search redis | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。 |
拉取 | docker pull 镜像名:tag | :tag是可选的, tag表示标签,多为软件的版本,默认是latest |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像 |
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mysql latest 791b6e40940c 2 weeks ago 465 MB
docker.io/mysql 5.5 d404d78aa797 9 months ago 205 MB
[root@localhost ~]# docker rmi ^C
[root@localhost ~]# docker rmi d404d78aa797
Untagged: docker.io/mysql:5.5
Untagged: docker.io/mysql@sha256:12da85ab88aedfdf39455872fb044f607c32fdc233cd59f1d26769fbf439b045
Deleted: sha256:d404d78aa797c87c255e5ae2beb5d8d0e4d095f930b1f20dc208eaa957477b74
Deleted: sha256:8ae7b3986b745c9cea4ea3789277dbf8543d6caed82c23d1ec19637813376df5
Deleted: sha256:6aaf52074d0d6ec3263af5f53b921a91ba3ddbeb2fece1a82ebe1bc5086c3814
Deleted: sha256:cf0a74866630c5d7ed05927cf981ac93b63ba83407872c9c0fbe0486d5f9806e
Deleted: sha256:e06cee897f9eb6bb5769f93cf6cd0285bb773d7e2bad6dfd5592a8682a6e6740
Deleted: sha256:4354e03e5a414adc57def51226d72fa2d117875a6c9665561a7c0fc85d23c46f
Deleted: sha256:647b973285178c7d4bf022c31baac404e0947d37be8e8e85731de8f7ca7e70e6
Deleted: sha256:c75ab456a585af40ca2ec8488164230deb81a1739d868604cb7b6661c24e37b5
Deleted: sha256:50a75eb6a0b2254fe5d96f999cc2087e72d515c93509a816bbd9ffb707a3b1b0
Deleted: sha256:1ae6616333a66450738a72a75c03bdf0236e0425ba0336ac5cdbe470ab6f4a3e
Deleted: sha256:68e318bd9263aedd19d9d73b051a262fa57e2a16f9c81c8b39163601020cd405
Deleted: sha256:6270adb5794c6987109e54af00ab456977c5d5cc6f1bc52c1ce58d32ec0f15f4
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mysql latest 791b6e40940c 2 weeks ago 465 MB
[root@localhost ~]#
2、容器操作
操作 | 命令 | 说明 |
---|---|---|
运行 | docker run --name container-name -d image-name eg:docker run –name myredis –d redis | –name:自定义容器名 -d:后台运行 image-name:指定镜像模板 |
列表 | docker ps(查看运行中的容器); | 加上-a;可以查看所有容器 |
停止 | docker stop container-name/container-id | 停止当前你运行的容器 |
启动 | docker start container-name/container-id | 启动容器 |
删除 | docker rm container-id | 删除指定容器 |
端口映射 | -p 6379:6379 eg:docker run -d -p 6379:6379 --name myredis docker.io/redis | -p: 主机端口(映射到)容器内部的端口 |
容器日志 | docker logs container-name/container-id | |
更多命令 | https://docs.docker.com/engine/reference/commandline/docker/ |
软件镜像(QQ.exe)——运行镜像——产生一个容器(正在运行的软件,运行的QQ);
步骤:
1)搜索镜像
[root@localhost ~]# docker search tomcat
2)拉去镜像
[root@localhost ~]# docker pull tomcat
3)根据镜像启动容器
[root@localhost ~]# docker run --name mytomcat -d tomcat:latest
4)查看运行中的容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMESb89542b81e01 tomcat:latest "catalina.sh run" 8 seconds ago Up 7 seconds 8080/tcp
mytomcat
5)停止运行中的容器
[root@localhost ~]# docker stop b89542b81e01
6)查看所有的容器
[root@localhost ~]# docker ps -a
7)启动容器
[root@localhost ~]# docker start b89542b81e01
8)删除容器
[root@localhost ~]# docker rm b89542b81e01
9)启动一个做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
# -d后台运行
# -p将主机的端口映射到容器端口
10)为了演示简单,关闭了linux的防火墙
# 查看防护墙状态
[root@localhost ~]# service firewalld status
# 临时关闭防火墙
[root@localhost ~]# service firewalld stop
11)查看容器日志
[root@localhost ~]# docker logs 66541cf99965
几个其他的高级操作
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
把主机中的/my/custom文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件里面
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
指定mysql的一些参数,