一、安装:
1、系统要求: Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
2、使用yum 安装:
yum update --确保yum是最新的
yum -y install docker-io -- 安装docker
安装完成查看docker版本
docker version
3、启动:
systemctl start docker ##启动
systemctl enable docker ##设置docker开机启动
二、 Docker 镜像常用命令
1.搜索镜像
[[email protected] ~]# docker search centos
报错信息:
Error response from daemon: Get https://index.docker.io/v1/search?q=centos&n=25: net/http: TLS handshake timeout
机器网络配置出了问题,解决方案:
查看服务器DNS网络配置vi /etc/resolv.conf
把里面的内容清除,并改为:
nameserver 8.8.8.8
nameserver 8.8.8.4
重启网络服务 systemctl restart network
2.下载docker镜像
国内从Docker Hub下载镜像速度很慢,我们可以配置阿里云专属加速器来解决
首先访问阿里云docker镜像仓库网站:
https://dev.aliyun.com/search.html
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
修改daemon配置文件/etc/docker/daemon.json来使用加速器 { "registry-mirrors": ["https://o72216kx.mirror.aliyuncs.com"] }
##重新加载daemon:
systemctl daemon-reload
##重启docker
systemctl restart docker
docker pull centos ##镜像名称
3、查看宿主机上的镜像:
docker images

4 .删除镜像
docker rmi 镜像ID
如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像
可以删除刚才下载的centos镜像,然后重新下载会发现速度快了很多!
5、卸载docker
yum remove docker-ce
rm -rf /var/lib/docker
三、Docker容器常用命令
1、查看当前运行的容器
docker ps ##查看当前运行的容器
docker ps -a ##查看所有容器
2、启动、停止、重启容器命令:
docker start 容器ID或name
docker stop 容器ID或name
docker restart 容器ID或name
3、删除容器
docker rm 容器ID
四、创建可交互容器
1.创建一个进入到了容器终端,并能执行交互命令的容器
docker run -it --name mycentos centos /bin/bash
-i:interactive具有交互功能
- -t:提供伪终端
- /bin/bash:进入到bash环境
- --name:表示容器的name,后面的centos表示使用的哪个镜像(镜像name)
创建容器的时候报错WARNING: IPv4 forwarding is disabled. Networking will not work.
# docker run -it -p 30001:22 --name=centos-ssh centos /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
解决办法:
# vim /usr/lib/sysctl.d/00-system.conf1
添加如下代码:
net.ipv4.ip_forward=1
重启network服务
# systemctl restart network
2.退出容器终端:exit
退出容器终端后,容器状态也是退出了,本机host进程也停止运行了,容器的状态会随着command的命令执行而改变,如果需要将容器持续不断的运行,那么将command变为持续不断的运行就可以
如果想正常退出终端但不关闭容器,可以使用Ctrl+P+Q退出容器
3.进入容器终端:
docker exec -it 容器ID /bin/bash
只有在容器启动的时候即up状态才能进入容器终端。
五、数据卷(Data Volume)
在容器中创建数据卷的目的:
- 持久化数据,只要数据卷有容器在使用,就会一直存在
- 数据卷可以被多个容器间共享和重用
- 数据卷在宿主机上能够找到映射,如果容器中的数据卷设为只读,可通过宿主机上的映射文件进行读写
1.直接创建数据卷
[[email protected] _data]# docker run --name mycontainer -v /home/data -it docker.io/centos /bin/bash
其中 -v参数即可创建一个数据卷,容器中的位置即是/home/data -it表示进入容器终端,可进入该/home目录查看
因为在宿主机上有该数据卷的映射,但是没有指定挂载目录,所以映射到了一个默认的位置,可以通过以下命令查找,首先退出容器终端
(快捷键 Ctrl+P+Q)回到宿主机,输入以下命令:
[[email protected] _data]# docker inspect mycontainer|grep /var/lib/docker/volumes
2.挂载宿主机目录到数据卷 在挂载宿主机目录之前,先临时关闭selinux,否则进入容器终端后会出现拒绝访问
[[email protected] home]# setenforce 0
然后根据镜像docker.io/centos创建容器mycontainer2,并将宿主机上的目录/home/data挂载到容器的/home/data数据卷
[[email protected] home]# docker run -it --name mycontainer2 -v /home/data:/home/data docker.io/centos /bin/bash
还可以同时挂载多个目录,创建容器mycontainer3,将宿主机上的/home/softs挂载到容器的/home/softs目录、宿主机上的/opt/data挂载到容器的/home/data目录
[[email protected] ~]# docker run --name mycontainer3 -v /home/softs:/home/softs -v /opt/data:/home/data:ro -it docker.io/centos /bin/bash
其中:ro表示只读,即容器中的/home/data目录是只读的
3、数据卷容器(Data volume containers)
如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。
创建一个命名的数据卷容器 dbdata:
[[email protected] /]# docker run -it -v /dbdata/volume1 -v /dbdata/volume2 --name dbdata docker.io/centos /bin/bash
其他容器就可以挂载这个数据卷容器中的数据卷了
[[email protected] /]#docker run -it --volumes-from dbdata --name mycontaner4 docker.io/centos /bin/bash
六、Nginx 镜像
1、使用docker命令下载nginx 镜像
docker pull nginx
查看镜像
根据nginx镜像创建一个容器并启动(如果有需要可以创建数据卷)
[[email protected] nginx]#docker run -d -p 10022:22 -p 8001:80 -p 4443:443 --name docker-nginx nginx
参数说明:
- -d 后台运行
- -p 宿主机port:容器port (端口映射)
- --name 容器名称
- 直接访问地址:http://192.168.108.128:8001/ 即可出现Nginx的欢迎页面,如下
Docker 安装及基本使用
七 、安装 MySQL8镜像
1、下载镜像
docker pull mysql
2、本地新建挂载配置目录(mysql8版本,一但mysql正式运行,就不能再设置忽略大小写了,强行设置会导致mysql服务启动不了,所以,我们创建容器时必须将mysql配置挂载到容器上。)
mkdir /home/msql01
新建配置文件my.cnf,增加配置(需要配置数据忽略大小写)
[mysqld] lower_case_table_names=1
3、重新创建并运行容器
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=root -v /home/mysql01:/etc/mysql/conf.d -p 13306:3306 -d mysql
查看容器是否启动成功
docker ps -a
4、进入容器连接mysql
docker exec -it containerid /bin/bash
mysql -uroot -proot
5、查询大小写配置
show variables like '%lower_case%';
6、远程连接授权
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
7、使用navicat 连接 mysql
八、安装redis 镜像
1、拉取最新版本的镜像
[[email protected] ~]# docker pull redis
2、查看镜像
3、创建配置文件挂载目录
mkdir /home/docker/redis/conf
mkdir /home/docker/redis/data
4、新建配置 redis.conf 置于 home/docker/redis/conf目录下
5、创建容器并启动
docker run --name docker_redis -p 16379:6379 -v /home/docker/redis/data:/etc/redis/data -v /home/docker/redis/conf:/etc/redis/conf -d redis redis-server /etc/redis/redis.conf
查看容器:
6、连接测试
宿主机上执行:
[[email protected] ~]# docker exec -it 95ae5e6dcf33 redis-cli
7、使用redis-desktop-manage 连接 redis