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

相关推荐
好像是个likun16 分钟前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
玖疯子2 小时前
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
docker
暴富的Tdy3 小时前
【快速上手Docker 简单配置方法】
docker·容器·eureka
cominglately3 小时前
centos单机部署seata
linux·运维·centos
CircleMouse3 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
Karoku0663 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
木子Linux4 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8244 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
watermelonoops4 小时前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin
阿甘知识库4 小时前
宝塔面板跨服务器数据同步教程:双机备份零停机
android·运维·服务器·备份·同步·宝塔面板·建站