一、安装docker
1.检查内核版本必须3.10以上
使用 uname -r 查看版本号
2.启动docker
systemctl start docker
2.停止docker
systemctl stop docker
3.开机启动
systemctl enable docker
二、常用命令,镜像操作
1.docker search 在docker仓库中查找 Docker Hub
例:docker search mysql
index为索引,name为镜像名称,description为简介,stars为星数(单位K)official是否为官方,automated是否自动构建
2.docker pull 镜像名:tag(版本号)拉取 没有tag为默认的tag
例:docker pull mysql:5.7.28
3.docker images 查看下载的镜像
4.docker rmi imageId 删除镜像
三、容器操作
1.docker run --name(容器名称) -d(后天运行)镜像名:标签名 ,镜像名和标签名一定要在最后,-d一定要在镜像名前边,在https://hub.docker.com查看对应镜像启动文档。
例:
docker run --name tomcat9 -d tomcat:latest
2.docker ps 查看哪些容器在运行
3.docker stop CONTAINER ID(容器id)/NAMES(容器名称)停止运行中的容器,可以使用docker ps -a 查看所有容器,包括已停止的
4.docker rm CONTAINER ID(容器id)/NAMES(容器名称)删除容器
5.docker start CONTAINER ID(容器id)/NAMES(容器名称)再次启动容器
6.端口映射 docker run -p 虚拟机端口:容器端口
例:
docker run --name tomcat9 -p 80:8080 -d tomcat
如果启动提示WARNING: IPv4 forwarding is disabled. Networking will not work.解决办法
vim /etc/sysctl.conf
#配置转发
net.ipv4.ip_forward=1
#重启服务,让配置生效
systemctl restart network
#查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功
sysctl net.ipv4.ip_forward
7.docker logs CONTAINER ID(容器id)/NAMES(容器名称)查看容器日志
8.docker exec 进入docker容器
例:docker exec -it mysql5.7(容器名) /bin/bash
更多命令请查看docker | Docker Documentation
docker run --name mysql5.7 -p 3306:3306 -v /docker-conf.d/mysql:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.28
9.docker容器自动重启
1)创建容器时设置
docker run -d --restart=always --name 设置容器名 使用的镜像
(上面命令 --name后面两个参数根据实际情况自行修改)
# Docker 容器的重启策略如下:
--restart具体参数值详细信息:
no // 默认策略,容器退出时不重启容器;
on-failure // 在容器非正常退出时(退出状态非0)才重新启动容器;
on-failure:3 // 在容器非正常退出时重启容器,最多重启3次;
always // 无论退出状态是如何,都重启容器;
unless-stopped // 在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。
2)修改已有容器,试用update
docker update --restart=always 容器ID(或者容器名)
(容器ID或者容器名根据实际情况修改)
10.其它问题
启动报错:
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"
添加--privileged=true
docker run --name mysql5.7 -p 3306:3306 -v /docker-conf.d/mysql:/etc/mysql/mysql.conf.d --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.28