阿里云镜像地址:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
docker常用命令
docker version # 显示 docker 的版本信息
docker info # 显示 docker 的详细信息
docker 命令 --help # 帮助命令
镜像命令
docker images 查看所有镜像
docker serarch 搜索镜像
docker search 镜像 -f 过滤
docker pull 下载镜像
docker pull mysql #下载最新版本
docker pull mysql:5.7 # 下载指定版本
docker rmi 删除镜像
docker rmi 镜像
docker rmi -f 强制删除
docker rmi -f 镜像 $(docker images -aq) 全部删除
容器命令
说明: 有了镜像才可以创建容器
#下载个centos镜像
docker pull centos
# 新建容器并启动
docker run [可行options] 镜像id
# 参数说明
--name "name" 容器名字
-d 后台方式运行
-it 使用交互方式运行
-p 指定容器端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-P 随机映射端口
# 从容器退出
exit
# 列出正在运行的容器
docker ps -a # 列出正在运行的容器(包括历史运行)
-n=? # 显示最近创建的容器,-n=2 显示最近2个容器
-q # 只显示容器的编号
# 退出容器不停止运行
ctrl + p + Q
# 删除容器
docker rm 容器id
docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
# 启动和停止窗口的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止容器
docker kill 容器id # 杀掉容器
查看日志
docker logs
docker logs -tf --tail=n
查看容器中的进程信息
docker top 容器id
查看镜像的元数据
docker inspect 容器id
进入当前正在运行的容器
# 通常容器都是使用后台方式运行的,需要进行容器修改一些配置
# 命令:
docker exec -it 容器id /bin/bash # 以交互方式进入容器
docker attach 容器id
# 区别
# docker exec # 进入容器后开启一个新的终端(常用)
# docker attach # 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
docker cp 容器id:容器路径 主机路径
docker stats 容器id 查看这个容器消耗cpu情况
commit 自己的镜像
docker commit 提交容器成为一个新的版本
# 命令
docker commit -m="提交信息描述" -a="作者" 容器id 目标镜像名:[tag]
数据卷
使用数据卷
命令
# -v 数据卷挂载
docker run -it -v Linux目录:容器目录 镜像名字
# 官方下载mysql
# 解释说明
# -e (environment) 用于配置环境
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
具名和匿名挂载
# 匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx
# 查看所有 volume(卷)的情况
docker volume ls
# 所谓匿名挂载就是在 -v 时只写了容器内路径,没有写容器外路径
# 具名挂载
[root@VM-4-16-centos ttt]# docker run -d -P --name nginx02 -v juming-nginx:/etc/
nginx nginx
a2602d74fd2f677ef6ed81d0a58dac9476a37688c6ed59df5d1f8eca464c883b
#################################################
[root@VM-4-16-centos ttt]# docker volume ls
DRIVER VOLUME NAME
local 177e907eaa230940b1f5628d8fba470bd67f201c218c162e9f8423fd58f9936c
local juming-nginx
[root@VM-4-16-centos ttt]#
# 查看具名挂载的地址:
[root@VM-4-16-centos ttt]# docker volume inspect juming-nginx
[
{
"CreatedAt": "2022-06-19T15:42:34+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
"Name": "juming-nginx",
"Options": null,
"Scope": "local"
}
]
所有的docker 容器内的卷,没有指定目录的情况下都是在/var/lib/docker/xxx/_data
我们可以通过具名挂载可以方便的找到我们的一个卷,大多数情况使用具名挂载
# 如何区分具名挂载和匿名挂载,还是指定路径挂载
-v 容器内路径 # 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机上当:容器内路径 # 指定路径挂载
拓展:
# 通过 -v 容器内路径:ro rw 改变读写权限
ro readonly # 只读
rw readwrite # 可读可写
docker run -d -P --name nginx02 juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 juming-nginx:/etc/nginx:rw nginx
# ro 只要看到这个,只能通过宿主机来操作,不能在容器内修改
dockerFile 的指令
FROM # 基本镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的,姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤,tomcat镜像,这个tomcat压缩包, 添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置
CMD # 指定这个容器启动时候要运行的命令,(相同命令)只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被 继承 DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY # 类似 ADD ,将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量
Dockfile 创建镜像
dockerfile 是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)
# 1、 编写一个自己的DockerFile的文件
# 文件内容:
FROM centos
MAINTAINER biienu<biienu@163.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash
# 2、构建命令
docker build -f dockerfile文件 -t 镜像名:[tag] . # 注意:最后一个点
docker history 镜像id 查看这个镜像创建记录
提交镜像到dockerHub或阿里云
# docker tag 命令: 给一个镜像设置tag
docker tag 镜像id 镜像名字:[tag]
# docker login -u : 登录到dockerhub
-u 用户名
# docker push 镜像 提交镜像到DockerHub