一、liunx安装
官网地址:https://docs.docker.com/engine/install/centos/
1、卸载原有的
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装需要的软件包
sudo yum install -y yum-utils
3、设置yum源
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4、安装最新docker 都按y
sudo yum install docker-ce docker-ce-cli containerd.io
5、可选择指定版本
查看版本
yum list docker-ce --showduplicates | sort -r
安装指定版本 VERSION_STRING填写需要的版本
sudo yum install docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io
6、启动docker
sudo systemctl start docker
7、配置镜像加速器 这里使用阿里云
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://kmu7ei4b.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
二、docker服务相关命令
1、启动docker 或重新启动
sudo systemctl start docker || sudo systemctl restart docker
2、查看状态
sudo systemctl status docker
3、停止docker
sudo systemctl stop docker
4、开机启动docker
sudo systemctl enable docker
三、docker镜像相关命令
镜像仓库:https://hub.docker.com/
1、查看本地镜像 || 查看镜像id
docker images || docker image ls || docker image ls -q
2、搜索镜像
docker search redis
3、拉去镜像
docker run redis 没有版本号默认最新
4、删除镜像
docker rmi 镜像id
四、docker容器相关命令
1、查看容器
docker ps || docker ps -a || docker ps -aq
2、创建容器
docker run -it --name=redis 镜像id /bin/bash
后台运行容器
docker run -id --name=redis 镜像id
-i:保持容器运行。通常与-t同时使用,加入it这两个参数后,容器创建后自动进入容器中,推出容器后容器自动关闭
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-d:以后台模式运行容器,创建一个容器在后台运行,需要使用docker exec进入容器,容器退出后不会关闭
-it:创建的容器一般称为交互式容器,-id:一般称为守护式容器
--name:为创建的容器命名
3、进入容器
docker exec -it 运行中id /bin/bash
4、启动容器
docker start 容器id
5、停止容器
docker stop 容器id
6、删除容器 || 删除所有容器
docker rm 容器id || docker rm docker ps -aq
7、查看容器信息
docker inspect 容器did
五、docker容器的数据卷
1、配置数据卷
创建容器时使用-v参数设置数据卷
docker run -v宿主机目录(文件):容器内目录(文件)
2、数据卷容器
创建启动c3数据卷容器,使用-v参数设置数据卷
例:docker run -it --name=c3 -v /volume contos:7 /bin/bash
创建c1\c2容器,使用--volumes-from参数设置数据卷
例:docker run -it --name=c1 --volumes-from c3 contos:7 /bin/bash
例:docker run -it --name=c2 --volumes-from c3 contos:7 /bin/bash
六、docker部署应用
1、mysql部署
docker run -id \
-p 3307:3306 \
--name=mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root$#1234A \
镜像id
参数说明
-p 3307:3306:将容器的3306端口映射到宿主机的3307端口
-v $PWD/conf:/etc/mysql/conf.d:将宿主机当前目录下的conf挂载到容器
-v $PWD/logs:/logs:日志数据卷挂载
-v $PWD/data:/var/lib/mysql:数据目录挂载
-e MYSQL_ROOT_PASSWORD=root$#1234A:初始化root用的密码
七、dockerfile
1、容器转镜像
docker commit 容器id 镜像名称:版本号
2、dockerfile
关键词 | 作用 | 备注 |
---|---|---|
FROM | 指定父镜像 | 指定dockerfile基于哪个image构建 |
MAINTAINER | 镜像维护者的名字和邮箱地址 | |
LABEL | 为镜像指定标签 | 用来表明dockerfile标签 可以使用label代替maintainer |
RUN | 执行命令 | 执行一段命令 默认时/bin/sh 格式:RUN command或者RUN ["command","param1","param2"] |
CMD | 容器启动命令 | 提供启动容器的时候默认命令和ENTRYPOINT配合使用,格式:CMD command param1 param2或者CMD ["command","param1","param2"] |
ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 |
COPY | 复制文件 | build的时候复制文件到image |
ADD | 添加文件 | build的时候添加文件到image中,不仅仅局限于当前build上下文 可以来源于远程服务 |
ENV | 环境变量 | 指定build时候的环境变量 可以在启动容器的时候通过-e覆盖 格式:ENV name=value |
ARG | 构建参数 | 构建参数只在构建的时候使用的参数 |
VOLUME | 定义外部可以挂载的数据卷 | 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用-v绑定格式VOLUME [“目录”] |
EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口 启动容器的时候使用 -p来绑定暴露端口 |
WORKDIR | 工作目录 | 指定在创建容器后,终端默认登录的工作目录。(也就是你登录进某个容器的时候,默认的目录) |
ONBUILD | 触发器 | 当构建一个被继承的 Dockerfile时运行命令,父镜像在被子继承后父镜像的 ONBUILD被触发(子镜像继承了父镜像 的dockerfile,父镜像有ONBUILD定义,那么这个子镜像继承过去了ONBUILD,ONBUILD会执行) |
3、构建
docker build -f dockerfile文件名 -t 需启动的应用名
八、docker-compose官网地址: https://docs.docker.com/compose/install/
1、安装docker-compose
安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
设置权限
sudo chmod +x /usr/local/bin/docker-compose
查看版本
docker-compose --version
删除
sudo rm /usr/local/bin/docker-compose
启动docker-compose
docker-compose up 需后台启动加-d