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:容器文件路径 本机文件路径

相关推荐
tryCbest1 小时前
CentOS部署Docker容器
linux·docker·centos
菠萝炒饭pineapple-boss2 小时前
单机让多docker拥有多ip出口
docker
qyhua2 小时前
【Linux运维实战】彻底修复 CVE-2011-5094 漏洞
linux·运维·安全
九皇叔叔3 小时前
Linux Shell 正则表达式中的 POSIX 字符集:用法与实战
linux·运维·正则表达式
007php0074 小时前
百度面试题解析:微服务架构、Dubbo、Redis及其一致性问题(一)
redis·百度·docker·微服务·容器·职场和发展·架构
東雪蓮☆4 小时前
K8s 平滑升级
linux·运维·云原生·kubernetes
AKAMAI4 小时前
数据孤岛破局之战 :跨业务分析的难题攻坚
运维·人工智能·云计算
东巴图5 小时前
JavaScript性能优化实战大纲性能优化的核心目标
运维·matlab
站长朋友5 小时前
【邀请函】锐成信息 × Sectigo | CLM - SSL 证书自动化运维解决方案发布会
运维·自动化·ssl·clm·sectigo·47天ssl证书
qq_183802875 小时前
Linux内核idr数据结构使用
linux·运维·服务器