一、docker 安装
1、卸载旧版本docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装需要的安装包
yum install -y yum-utils
3、设置镜像仓库(默认是国外仓库)
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里云镜像地址)
更新yum软件包索引
yum makecache fast
4、安装docker相关的 docker-ce 社区版 ee企业版
yum install docker-ce docker-ce-cli containerd.io
#如果报错package docker-ce-3:19.03.9-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
解决方法:
进入阿里云镜像地址:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/找到你想要的或者最新的containerd.io包,拼接在阿里云地址后面,
如下:
yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
然后再执行 yum install docker-ce docker-ce-cli containerd.io 即可
5、启动docker
systemctl start docker
6、查看版本
docker version
7、运行一个hello world
docker run hello-world
8、查看镜像
docker images
二、卸载docker
yum remove docker-ce docker-ce-cli containerd.io(卸载依赖)
rm -rf /var/lib/docker(删除目录)
三、配置阿里镜像加速
1、登录自己的阿里云找到容器服务,找到镜像加速地址
2、配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://x86tlmpq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
四、docker的常用命令
帮助命令
docker version #显示docker的版本信息
docker info #显示docker更加详细的信息 系统信息
docker 命令 --help 例如 docker images --help
帮助文档
https://docs.docker.com/registry/spec/api/
镜像命令
docker images 查询所有本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
REPOSITORY 仓库的镜像源
TAG 镜像标签
IMAGE ID 镜像id
CREATED 镜像创建时间
SIZE镜像大小
扩展命令
docker images -a 列出说有的
docker images -q 只查看镜像id
docker search 镜像搜索命令
docker search mysql
搜索到的信息
NAME DESCRIPTION STARS OFFICIAL
mysql MySQL is a widely used, open-source relation… 9535 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3458 [OK]
docker pull 下载镜像命令
docker pull mysql 下载mysql镜像 默认下载最新版
docker pull mysql:5.7 根据版本去下载
docker rmi 删除镜像命令
docker rmi -f id(镜像的id) 根据镜像id删除镜像
docker rmi -f id1 id2 id3 id4 批量删除镜像
docker rmi -f $(docker images -aq) 删除所有的镜像
容器命令
有了镜像才可以创建容器 下载一个centos容器测试学习
docker pull centos 下载centos
docker run [可选参数] images
#参数说明
--name="name" 容器名称 来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-P 随机指定端口
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口
-p 主机端口:容器端口 (常用的)
-p 容器端口
docker run -it centos /bin/bash 使用交互方式启动并进入容器
退去命令
exit #直接退出容器并停止容器
Ctrl + p + q #退出且不停止容器
列出所有运行的容器
docker ps 列出当前正在运行的容器
docker ps -a 列出所有的容器
docker ps -aq 列出所有的容器id
删除容器
docker rm 容器id 不能删除正在运行的容器
docker rm -f 容器id 根据容器id删除镜像
docker rm -f $(docker ps -aq) 删除所有的容器
启动和停止容器命令
docker start 容器id 启动容器
docker restart 容器id 重启容器
docker stop 容器id 停止容器
docker kill 容器id 杀掉容器
常用命令
后台启动程序
docker run -d centos
查看日志
docker logs -tf --tail number 显示日志条数
查看容器中的进程信息
docker top 容器id
查看镜像元数据
docker inspect id(容器id)
进入容器内命令
方式一:docker exec -it 容器id /bin/bash
方式二:docker attach 容器id
从容器拷贝文件到主机上
docker cp 容器id:容器内地址 主机地址
使用数据卷技术,将容器里的数据和服务器里的数据同步
docker run -it -v /home/ceshi:/home centos /bin/bash
将容器/home 里的数据 挂在到服务器的/home/ceshi文件夹上
启动mysql
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysq0l mysql:5.7
实现多个数据库数据同步
docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysq02 --volumes-from mysql01 mysql:5.7
将mysql01的数据挂载到mysql02实现数据同步
-d 后台运行
-p 端口映射
-v 数据卷挂载
-e环境配置
容器内路径
具名和匿名挂载
#匿名挂载
-v 容器内路径 不用指定服务器内路径就可以挂载
查看所有卷的情况
docker volume ls
#具名挂载 就是给数据卷起个名字
-v 卷名:容器内路径 启动
查看一下这个卷所在的位置
docker volume inspect 卷名
#挂载方式区分
-v 容器内路径 匿名挂载
-v 名字:容器内路径 具名挂载
-v /宿主机路径:容器内路径 路径挂载
Dockerfile
Dockerfile就是构建镜像的脚本
dockerfile指令
FROM #基础镜像一切从这开始
MAINTAINER #镜像是谁写的, 姓名+邮箱
RUN #镜像构建的时候需要运行的命令
ADD #步骤,例如 tomcat镜像,添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOST #暴露的端口
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替换
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD #当构建一个被继承的DockerFile这个时候会运行ONBUILD
COPY #类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量
docker build -f dockerfile -t mycentos:0.1 . 构建我们的dockerfile 命令