目录
1 docker安装
1.1 yum安装docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
2 Docker常用命令
命令 | |
---|---|
docker images | 查看镜像 |
docker images -q | 只显示镜像ID |
docker search mysql | 搜索远程仓库镜像 |
docker pull mysql:5.7.35 | 拉取远程仓库镜像 |
docker rmi 镜像ID | 删除镜像 |
docker rmi -f 镜像ID | 强制删除镜像 |
docker ps | 查看正在运行docker容器 |
docker ps -a | 查看所有docker容器 |
docker ps -aq | 查看多有docker容器的ID |
docker run | 创建并启动容器 |
docker create | 创建容器 |
docker start 容器ID | 启动容器 |
docker restart 容器ID | 重启容器 |
docker stop 容器ID | 停止容器运行 |
docker rm 容器ID | 删除容器 |
docker rm -f 容器ID | 强制删除容器 |
docker exec -it 容器ID /bin/bash | 进入容器交互;输入exit退出 |
docker inspect 容器ID | 查看容器详细信息 |
docker logs 容器ID | 查看容器日志 |
2.1 Docker run 命令使用
Docker官方参考文档:Docker run reference | Docker Documentation
docker run的格式:docker run 参数 镜像名:标签 command (可以没有command和参数)
例如:
创建并启动MySQL容器
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/data:/var/lib/mysql mysql:5.7.35
常用参数:
--name:指定容器名
-d:容器后台运行
-p:指定容器宿主服务器端口和容器端口的映射关系;例如:-p 3306:3306
-v:挂载数据卷(容器数据的持久化),容器宿主服务器目录:容器目录;例如:-v /root/data:/var/lib/mysql
-e:设置环境变量
3 Docker镜像
3.1 Dockerfile
3.1.1 FROM
指定基础镜像,例如使用busybox作为基础镜像,没有基础镜像就用scratch。
FROM busybox
3.1.2 MAINTAINER
自定义信息,比如:镜像维护人信息,实际可有可无。
MAINTAINER bigWhiteShark
3.1.3 RUN
运行指定命令,可以多个RUN指令(最多127),且一个RUN指令就相当于加一层镜像,可以使用&&连接命令减少层数;镜像层数可以用docker inspect命令查看layers属性。
RUN mkdir /home/data
3.1.4 WORKDIR
容器工作目录,容器启动后就会在容器的工作目录下;目录不存在会自动创建。
WORKDIR /app
3.1.5 COPY
将容器宿主服务器的文件或目录拷贝到容器中。
COPY /etc/passwd /app
另外:ADD指令作用类似于COPY,不同之处在于ADD支持使用URL上下载文件拷贝到容器中。
ADD http://127.0.0.1/file/app.tar.gz /app
3.1.6 EXPOSE
暴露端口,比如,容器的web应用的端口指定在80端口,后续就可以通过docker run命令的-p选项,通过映射端口访问。
EXPOSE 80
3.1.7 CMD
容器启动时要运行的命令;
可以写成这样
CMD ["echo", "-e", "123\n123"]
也可以写成这,或是一个可执行的文件,例如:脚本
CMD echo -e "123\n123"
可以仅用于给ENTRYPOINT提供参数
CMD ["-a", "-l"]
ENTRYPOINT ["ls"]
实际就是ls -al命令;如有多个CMD指令,只有最后一个CMD生效
3.1.8 ENTRYPOINT
容器启动时要运行的命令;可以写成这样
ENTRYPOINT ["echo", "123"]
也可以写成这样,或是一个可执行的文件,例如:脚本
ENTRYPOINT echo "123"
3.1.9 ENV
设置环境变量,例如MySQL容器启动时需要设置MYSQL_ROOT_PASSWORD变量
ENV MYSQL_ROOT_PASSWORD=123456
3.1.10 ARG
设置环境变量
ARG VERSION=latest
3.1.11 VOLUME
声明数据卷
3.1.12 USER
指定运行用户
3.2 构建docker镜像
docker build -t imageName:tag -f dockerfileName .