docker 入门学习
docker 拉取网站
Docker - Official Image | Docker Hub
1.安装docker
1.删除本机docker
yum remove docker*
2.下载yum运行时库
sudo yum install -y yum-utils
3.设置下载源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4.下载docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
-y 参数 询问的选项都设置为yes,分别安装docker服务器,docker命令行,docker用到的动态链接文件
5.设置开机启动
systemctl enable docker --now
6.设置镜像加速器
查找镜像加速源
阿里云服务器 ——> 容器镜像服务 ——> 镜像工具 ——> 镜像加速器 ——> 选择centos
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6nm7p6th.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
找镜像
hub.docker.com
下载镜像
docker pull 软件名
常用命令
docker images #查看下载的镜像有哪些
docker ps #查看docker服务器上启动运行的软件
docker rmi 镜像Id #移除镜像
docker logs 镜像id #查看镜像的日志
docker cp 已启动的镜像id:/etc/nginx/nginx.conf /data/conf/nginx.conf #把容器指定位置的东西复制出来,也可以把外面的东西复制到容器内部
启动容器
docker run 设置项 镜像名 #镜像启动运行的命令
docker run --name=mynginx -d nginx
--name 给启动的容器起个名称,便于区分 -d 让容器在后台运行
docker rm id/起的容器名称 #杀死进程 -f 该参数杀死正在运行的进程 先用docker ps -a 查看已经终止挂起的容器
docker stop id/起的容器名称 #停止以后台运行模式启动的容器,只是停止,在进程中仍然存在
docker start id/起的容器名称 #启动被停止的容器
运行机器重启后,运行的容器停止,可以在启动时加 --restart=always ,在机器重启后该容器自动启动
-p 端口映射 88:80 将88端口收到的访问请求转发到80端口
进入容器修改内容
(例:改变nginx的html文件)
1.用docker ps命令查询当前运行的容器的id
2.执行docker exec -it <容器id> /bin/bash 即可切换到对于该容器的操作的虚拟机 (/bin/bash 是指当前命令窗口,若/bin/bash 不能用,尝试使用/bin/sh)
3.对容器进行操作
4.exit 退出docker容器
提交改变
(将对于容器的修改保存起来,相当于保存了一份快照,类似于git提交)
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
1.执行命令
docker commit [option] <容器id> <给修改的容器起个别名>
Options:
-a, --author string Author (e.g., "John Hannibal ")
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
2.例:docker commit -a “wood” -m “首页变化” <容器id> wood-nginx:v1.0
3.docker rm 容器id #关闭启动的容器
4.用docker images 可以看到修改的容器
5.用docker run -d wood-nginx:v1.0 启动修改的容器
在新的机器上运行修改的容器
方法1:对镜像进行压缩,生成压缩包来保存镜像
1.docker save -o xxx.tar 提交的镜像名:版本tag
docker save -o wood-nginx.tar wood-nginx:v1.0
命令执行完成后,在执行命令的文件目录下生成镜像的压缩文件
2.传输到其他机器解压后启动镜像
docker load -i 镜像的压缩文件名
docker load -i wood-nginx.tar
3.在目的机器执行docker images后可以看到解压缩的镜像名
方法2:将镜像推送到远程仓库
1.在hub.docker.com上注册账户,并建立属于自己的权限为公有的仓库
2.docker tag 修改的镜像名:版本tag 在仓库中的绝对路径:版本tag (改成仓库要求的名称格式)
docker tag wood-nginx:v1.0 wood/wood-nginx:v1.0
3.用docker images 可以看到多了一个以路径为名称的镜像名
4.在终端登录到远程仓库
docker login
输入在网站上注册的用户和密码
5.将带路径前缀的镜像推送到远程仓库
docker push wood/wood-nginx:v1.0
6.退出登录
docker logout
7.在网站上查看推送的镜像
8.在另一台机器上运行docker pull +推送的镜像名 即可在其他机器上运行修改后的镜像
挂载数据到外部修改
为了不用在想要修改镜像时进入镜像运行的虚拟机,将虚拟机外的文件目录挂载到虚拟机的目录上,实现数据的外部修改
在常规的docker启动命令中添加 -v 参数进行挂载
docker run --name=mynginx -d \
--restart=always -p 80:88 -v /data/html:/usr/share/nginx/html:ro nginx
*这个文件的挂载相当于直接替换了虚拟机内部的文件路径,使用时要注意在挂载的路径中添加镜像所需文件后进行修改
*-v 可以添加多个 -v 参数来挂载多个文件
进行挂载后即可在主机对镜像进行修改
示例:部署redis
用自己编辑的redis.conf参数配置文件启动redis,并且将数据持久化到指定目录,分别挂载redis的参数配置文件和持久化目录
在redis的redis.conf配置文件中简单的写入appendonly yes来启动持久化进行测试
docker run -v /root/test/redis/redis.conf:/etc/redis/redis.conf \
-v /root/test/redis/data:/data -d --name=myredis \
-p 6379:6379 redis redis-server /etc/redis/redis.conf