Docker使用

目录

Docker安装

Docker常用命令

找镜像

启动镜像

修改容器内容

提交改变

推送到远程仓库

物理传输

推送远程仓库

挂载数据

docker日志

docker复制


Docker安装

移除以前的docker相关包:sudo yum remove docker*

安装yum工具类:yum install -y yum-utils

添加docker安装源地址:

bash 复制代码
yum-config-manager \
  --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

安装docker:yum install -y docker-ce docker-ce-cli containerd.io

docker-ce:docker社区版

docker-ce-cli:操作docker服务器的命令行

containerd.io:docker容器化的运行环境

启动docker:systemctl enable docker --now

配置阿里云镜像:

bash 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ckdhnbk9.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker常用命令

找镜像

hub.docker.com 在网站上搜索镜像:如Nginx,使用docker下载镜像

bash 复制代码
docker pull nginx //下载最新版

docker pull nginx:1.21.1 //下载1.21.1版

docker pull redis

启动镜像

查看下载了哪些镜像:docker images

删除镜像:docker rmi 镜像名:版本号 / 镜像id

直接写镜像名代表删除最新版本:docker rmi nginx == docker rmi nginx:latest

启动容器:有了镜像相当于有了安装包,启动容器相当于安装

docker run OPTIONS image COMMAND ARG...

OPTIONS:设置项

COMMAND:镜像启动运行的命令(镜像里一般有默认,一般不用写)

docker run --name=mynginx -d nginx

--name=mynginx:设置容器名,不能与在运行中的和已关闭的容器重复,除非删除容器

-d:后台运行

查看运行中的容器:docker ps

查看所有容器,不管是否在运行:docker ps -a

删除已经关闭的容器:docker rm name / 容器id

name:docker run 时设置的名字 :--name = mynginx

删除在运行的容器:docker rm name -f

停止在运行的容器:

前台运行:ctrl+c

后台运行:docker stop 容器id/名字

启动停止的容器:docker start 容器id/名字

应用开机自启:docker update 容器id/名字 --restart=always

端口映射:启动docker容器相当于在linux服务器中创建一个虚拟服务器,当我们想要使用linux的公网ip访问服务器时,由于虚拟服务器只在docker容器中,对应的端口也只是虚拟服务器的,无法访问,这时我们可以在linux中使用一个端口与这个虚拟服务器的端口映射,这样我们访问linux服务器的端口就能映射到对应的容器来访问

docker run --name=mynginx -d --restart=always -p 88:80 nginx

-p 88:80

88:linux主机上的端口

80:nginx启动默认的端口

需要关闭对应的防火墙


修改容器内容

docker启动一个容器相当于在linux为其创建一个小linux:小型linux完整系统+容器软件的环境,因此可以进入这个小型linux系统来修改容器内容

进入容器:docker exec -it 容器id /bin/bash

-it :以交互模式进入容器内部

/bin/bash:进入容器的bash控制台

这个小型linux的内容可以在下载镜像时查看。

这时在访问88端口就发现nginx内容修改了


提交改变

当我们对容器进行修改后,如果该容器挂了,我们再次通过镜像创建容器时会发现,对之前容器的修改并不会在新容器上,意味着我们可能要重新修改。

为了防止这种情况,我们可以使用以下命令把修改后的容器提交到本地镜像中,当容器挂了时使用该镜像进行容器启动,这样以前的修改就能保存下来。

命令:docker commit -a "提交者" -m "提交信息" 容器id 镜像名:版本号

这时之前对首页的修改不会出现

这时对首页的修改恢复了:


推送到远程仓库

提交改变只能在本机上恢复,当不同主机需要根据提交到本机的镜像来启动容器,可以用物理传输:把该镜像打包为压缩文件在发送给其他主机;也可以将该镜像推送到远程仓库中,另一台主机在到远程仓库中拉取到自己主机上并启动容器。

物理传输

打包命令:docker save -o 压缩文件名.tar 镜像名:版本号

发送命令:scp 压缩文件 目标主机:/路径

也可以使用工具来传输:如FinalShell。

另一台主机加载该镜像:

docker load -i 压缩文件


推送远程仓库

在docker hub中注册登录账号,创建一个新仓库

使用命令:docker tag 本地镜像名:版本号 仓库名:版本号 ,将镜像复制一份,使镜像名格式正确

登录docker hub:docker login

推送:docker push 仓库名:版本号

推送完建议退出登录:docker logout

别的主机拉取:docker pull 仓库名:版本号


挂载数据

修改容器内容需要进入容器的虚拟服务器中,但可以将本机服务器的一个文件夹与虚拟服务器的文件夹关联,这样只需要修改本机服务器下文件夹就能修改容器内容。

bash 复制代码
docker run --name=mynginx \
-d --restart=always \
-p 88:80 -v /data/html:/usr/share/nginx/html:ro \
nginx

-v:本机文件夹:容器文件夹:操作方式

操作方式:ro:容器里边不能改

rw:容器里边能改(默认)

如果本机文件夹为空,容器也为空(相当于覆盖)


docker日志

命令:docker logs 容器名/id


docker复制

将docker容器中的文件复制到本机或把本机文件复制到容器

命令:docker cp 容器id:容器文件路径 本机文件路径

相关推荐
AOwhisky24 分钟前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
做个文艺程序员27 分钟前
Linux第22篇:用Docker容器化你的Java SaaS应用:一次构建,随处运行
java·docker·容器
imc.111 小时前
linux基础IO
linux·运维·服务器
躺不平的理查德1 小时前
让Ubuntu 的第二块网卡 ens37 永久固定为 192.168.30.111
运维·服务器
bitbrowser2 小时前
Facebook 验证反复回到原页面,应该从哪里排查
运维·服务器·facebook
Land03292 小时前
AI网页元素变化无法自动修复?自带元素自愈的自动化解决方案
运维·人工智能·ai·自动化·rpa
fengyehongWorld2 小时前
Jenkins 安装与简单配置
运维·jenkins
云智慧AIOps社区2 小时前
2026 国产化 ITSM 替代指南:横向测评 ServiceNow、轻帆云、Jira等五款主流IT服务管理平台
运维·人工智能·运维开发·it服务管理·itsm平台
Urbano2 小时前
针织卫衣全流程生产工序科普:自动化替代、产能优化与设备选型实战方案
运维·自动化
梦梦代码精2 小时前
基于ThinkPHP6 + Vue3的家政预约系统全解析:从LBS定位到自动派单的完整实现
java·docker·开源·php·代码规范