1.安装Docker
# bash安装 通用安装方式
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirrot Aliyun
2.启动Docker
systemctl start docker
3.检测Docker启动成功过
# 查看安装docker引擎版本号
docker info
配置Docker开机自启
systemctl enable docker
CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。
systemctl 提供了一组子命令来管理单个的 unit,其命令格式为:
systemctl [command] [unit]
command 主要有:
start:立刻启动后面接的 unit。
stop:立刻关闭后面接的 unit。
restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。
reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。
enable:设置下次开机时,后面接的 unit 会被启动。
disable:设置下次开机时,后面接的 unit 不会被启动。
status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。
is-active:目前有没有正在运行中。
is-enable:开机时有没有默认要启用这个 unit。
建立docker组
sudo groupadd docker
sudo usermod -aG docker $USER
配置Docker镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://a0v9ns0q.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker 常用命令
# docker引擎
docker info
# docker image 获取帮助
# 查看本地仓库中存在哪些镜像
docker images
# 运行
docke run nginx
# 配置容器自启
docker update --restart=always 容器id
# 宿主机与容器中端口进行映射
docker run -p 80(系统上外部端口):80(容器内服务上监听的端口)
# -d 后台运行
docker run -p 80:80 -d
# --name 指定容器名称
docker run -d -p 80:80 --name nginx
# 停止
docker stop nginx
# 删除
docker rmi id
docker rm nginx 删除一个容器
docker rm -f nginx 强制删除正在运行的容器
# 查看日志
docker logs nginx
docker logs -f nginx 实时展示日志
docker logs -tf 时间戳
docker logs --tail n nginx 查看容器日志最后的n行
# 查看当前运行的容器
docker ps 或查看正在运行容器
docker ps -a 查看所有容器(运行&非运行)
docker ps -q 返回正在运行的容器id
docker ps -qa 返回所有容器的id
# 查看容器内进程
docker top 容器id或者容器名
# 与容器内部进行交互
docker exec -it 容器id|容器名 bash (-it交互模式)
exit 退出
# 操作系统与容器的传输文件
从容器复制文件到操作系统: docker cp 容器唯一标识(id,name):容器内资源路径 操作系统中路径
从操作系统复制文件到容器: docker cp 文件|目录名 容器唯一标识(id|name):/容器内资源路径
# 查看容器细节
docker inspect 容器id
# 数据卷
docker run -d -p 80:80 --name 运行时的名称 -v 宿主机绝对目录:容器内目录 容器名(镜像名称)
# 将容器打包成一个新的镜像(复用)
docker commit -m "描述信息 -a "作者信息" (容器id或名称) 打包的镜像名称:标签
# 将镜像备份出来
docker save 镜像名称:Tag -o 镜像名称-Tag.tar
# 载入镜像
docker load -i nginx.tar
Docker 中容器之间网络配置
# 查看docker 网桥配置
docker network ls
# 创建自定义网桥
docker network create ems(网桥名称)
docker network create -d bridge ems (网桥)
docker run -d -p 8080:8080 --network ems --name mytomcat tomcat:8.0-jre8 (自动映射ip ems=>x.x.x.x)
数据卷操作
# -v
docker run -d -p 8080:8080 --name tomcat90 -v /root/apps:/usr/local/tomcat/webapps:ro tomcat:8.5.31-jre10
:ro readonly 只读
# 特点
a.数据卷可以在容器之间共享和重用
b.对数据卷的修改会立即影响到对应容器
c.对`数据卷`的更新修改,不会影响镜像
d.数据卷会一直存在,及时容器被删除
# 数据卷操作
自定义数据卷操作 docker run -v 绝对路径:容器内路径
自动创建数据卷 docker run -v 卷名(随意):容器内路径
# docker操作数据卷指令
a.查看数据卷 docker volume ls
b.查看某个数据卷的细节 docker volume inspect 卷名
c.创建数据卷 docker volume create xx
d.查看 docker volume inspect xx
运行MySQL
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
docker下mysql配置
【client】
default-character-set=utf8
【mysql】
default-character-set=utf8
【mysqld】
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collaction-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve