1. docker
1.1 install
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
# 安装
yum -y install docker-ce docker-ce-cli containerd.io
# 卸载
yum remove docker-ce docker-ce-cli containerd.io
1.2 image
# 查找镜像(建议去hub.docker.com 直接搜,更直观)
docker search image_name
# 拉取镜像 如果不指定标签,会下载最新
命令语法:docker pull imagename:tag
docker pull centos:7
docker pull centos
docker pull centos:latest
# 查看本地镜像
docker images
# 删除镜像 可以同时删多个
docker rmi image_ID
# 删除所有镜像
docker rmi `docker images -q`
1.3 container
# 查看容器
docker ps
# 启动容器
docker start docker_id
# 停止容器
docker stop docker_id
# 容器的文件copy到宿主机上(不是在容器内执行)
语法:docker cp 容器名称:容器目录 需要拷贝的文件或目录
docker cp 20fd8:/home/lqz.txt /home/lqz.txt
# 宿主机的文件copy到容器中
语法:docker cp 需要拷贝的文件或目录 容器名称:容器目录
docker cp ./lqz.txt 20fd894a3f20:/home/lqz.txt
docker inspect 容器名称 # 查看容器的详细描述,很多
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
# 查看容器IP地址
docker inspect 容器名称 # 查看容器的详细描述,很多
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
# 删除容器(删除已停止的容器)
docker rm 容器id
docker rm `docker ps -a -q`
# 查看正在运行的容器
"""
-a 参数是查看所有容器
-l 参数是查看最后一次运行的容器
"""
docker ps
docker ps -a
docker ps -l
# 运行容器
"""
把镜像运行成容器其实是两个命令create和run
会有很多参数,下面回详细的介绍每一个参数
-i:表示运行容器
-t:表示容器启动后会进入容器命令行
-d:会创建一个守护式容器在后台运行
--name :为创建的容器命名,如果不写,随机生成一个名字
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口
"""
# 运行容器的核心命令其实就是docker run,此外会有很多参数
docker run
# 启动一个centos容器,名字叫mycentos,并且进入
docker run -it --name=mycentos centos:7
# 启动一个centos容器,名字叫mycentos,不进入
docker run -id centos:7
# 启动容器
docker start mycentos
# 进入到容器内部(本质是让容器执行命令)
语法: docker exec 容器id 命令
docker exec f82e8578b9b1 ls # 可以查看该容器内部的内容
docker exec -it f82e8578b9b1 /bin/bash # 进入到容器内部
# 退出
exit
# -v参数:目录映射
docker run -id --name=mycentos -v /home/mycentos:/mycentos centos:7
# -p参数:端口映射、netstat -nlp |grep 80 查看本机80端口占用情况
docker run -id --name=mysql -p 80:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 部署 portainer
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock:z --privileged --restart=always --name portainer portainer/portainer-ce
2. Dockerfile
FROM 基础镜像 # 基于哪个基础镜像来构建
MAINTAINER mire # 声明镜像的创建者
ENV key value # 设置环境变量 (可以写多条)
RUN command # 是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file # 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file # 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR mire # 设置工作目录,运行这个容器需要来到这个路径
CMD:添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改。
ENTRYPOINT:同CMD,但这个一定会被执行,不会被覆盖修改。
MLABELAINTAINER:表明镜像的作者。将被遗弃,被LABEL代替。
EXPOSE:设置对外暴露的端口。
ARG:设置只在构建过程中使用的环境变量,构建完成后,将消失
COPY:将本地文件或目录拷贝到镜像的文件系统中。
VOLUME:添加数据卷
USER:指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
ONBUILD:如果制作的镜像被另一个Dockerfile使用,将在那里被执行Docekrfile命令
STOPSIGNAL:设置容器退出时发出的关闭信号。
HEALTHCHECK:设置容器状态检查。
SHELL:更改执行shell命令的程序。Linux的默认shell是[“/bin/sh”, “-c”],Windows的是[“cmd”, “/S”, “/C”]。
3. docker-compose
3.1. 安装
yum install -y epel-release
yum install -y python-pip
yum install -y docker-compose
docker-compose -version
3.2 容器管理命令
# 启动管理容器(常用命令)
docker-compose up # 会自动搜索当前路径下的 docker-compose.yml文件
docker-compose -f 指定文件 up
docker-compose up -d # 后台执行,一般我们看日志输出,不用这个
docker-compose stop # 停止,不会删除容器和镜像
docker-compose down # 停止,并删除关联的容器
docker-compose start # 启动yml文件管理的容器
docker-compose ps # 正在运行的容器 被docker-compose管理的容器
docker-compose images # docker-compose管理的镜像
docker-compose exec yml文件中写的service /bin/bash # 进入到容器内