服务器使用Docker的学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 记录了个人学习docker的操作,利用docker部署一些基本的应用。

安装Docker

环境查看

# 系统内核

[cb@hadoop102 ~]$ uname -r

3.10.0-1160.el7.x86_64


# 系统版本

[cb@hadoop102 ~]$ cat /etc/os-release

NAME="CentOS Linux"

VERSION="7 (Core)"

ID="centos"

ID_LIKE="rhel fedora"

VERSION_ID="7"

PRETTY_NAME="CentOS Linux 7 (Core)"

ANSI_COLOR="0;31"

CPE_NAME="cpe:/o:centos:centos:7"

HOME_URL="https://www.centos.org/"

BUG_REPORT_URL="https://bugs.centos.org/"


CENTOS_MANTISBT_PROJECT="CentOS-7"

CENTOS_MANTISBT_PROJECT_VERSION="7"

REDHAT_SUPPORT_PRODUCT="centos"

REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装

# 1、删除自带的

yum remove docker \

                 docker-client \

                 docker-client-latest \

                 docker-common \

                 docker-latest \

                 docker-latest-logrotate \

                 docker-logrotate \

                 docker-engine

                 

# 2、需要的安装包

yum install -y yum-utils


# 3、设置镜像的仓库

yum-config-manager \

   --add-repo \

   https://download.docker.com/linux/centos/docker-ce.repo  # 默认国外仓库

# 阿里云镜像

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


# 更新yum索引

yum install -y yum-utils


# 4、安装docker

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin


# 5、启动docker

systemctl start docker

systemctl enable docker # 开机启动


# 6、查看是否安装成功

docekr version


# 7、hello-world

docker run hello-wold


# 8、查看镜像

docker images


# 卸载docker

yum remove docker-ce docker-ce-cli containerd.io

rm -rf /var/lib/docker

rm -rf /var/lib/containerd

Docker的常用命令

帮助命令

docker version  # 显示docker的版本信息

docker info    # 显示docker的系统信息

docker 命令 --help # 帮助命令

镜像命令

docker images 查看所有本地的主机上的镜像

REPOSITORY    镜像的仓库源

TAG       镜像的标签

IMAGE ID        镜像的id

CREATED         镜像的创建时间

SIZE 镜像的大小

-a,--all # 列出所有镜像

-q,--quiet # 只显示镜像的id

docker search 搜索镜像

搜索过滤

--filter=STARS=3000 # 搜索出来的镜像START大于3000

docker pull 镜像名[:tag]  下载镜像

[root@hadoop102 cb]# docker pull mysql

Using default tag: latest # 不写tag 默认是latest

latest: Pulling from library/mysql

4be315f6562f: Pull complete # 分层下载

96e2eb237a1b: Pull complete

8aa3ac85066b: Pull complete

ac7e524f6c89: Pull complete

f6a88631064f: Pull complete

15bb3ec3ff50: Pull complete

ae65dc337dcb: Pull complete

573c3c7fa18d: Pull complete

9d10771b98b8: Pull complete

3d8ef442614b: Pull complete

7dc17a6cea26: Pull complete

752752efdaea: Pull complete

Digest: sha256:2dafe3f044f140ec6c07716d34f0b317b98f8e251435abd347951699f7aa3904 # 签名

Status: Downloaded newer image for mysql:latest

docker.io/library/mysql:latest # 真实地址


# 指定版本下载

[root@hadoop102 cb]# docker pull mysql:5.7

5.7: Pulling from library/mysql

4be315f6562f: Already exists

96e2eb237a1b: Already exists

8aa3ac85066b: Already exists

ac7e524f6c89: Already exists

f6a88631064f: Already exists

15bb3ec3ff50: Already exists

ae65dc337dcb: Already exists

a4c4c43adf52: Pull complete

c6cab33e8f91: Pull complete

2e1c4f2c43f6: Pull complete

2e5ee322af48: Pull complete

Digest: sha256:e767595ba3408fbb2dda493be3594b9a148178df58325fafe8b0363662935624

Status: Downloaded newer image for mysql:5.7

docker.io/library/mysql:5.7

docker rmi 删除镜像

[root@hadoop102 cb]# docker rmi -f 容器id # 删除指定容器

[root@hadoop102 cb]# docker rmi -f 容器id 容器id 容器id # 删除多个容器

[root@hadoop102 cb]# docker rmi -f $(docker images -aq) # 删除所有容器

容器命令

有了镜像才可以创建容器,linux

docker pull centos

新建容器并启动

docker run [可选参数] image

# 参数说明

--name="Name"  # 容器名字 tomcat01,tomcat02,用来区分容器

-d       # 后台方式运行

-it       # 使用交互方式运行,进入容器查看内容

-p       # 指定容器的端口 -p 8080:8080

 -p ip:主机端口:容器端口

 -p 主机端口:容器端口(常用)

 -p 容器端口

 容器端口

-p       # 随机指定端口


# 测试 启动并进入容器

[root@hadoop102 cb]# docker run -it centos /bin/bash

[root@b743f8bf5229 /]# ls

bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var

dev  home  lib64  media       opt  root  sbin  sys  usr


# 从容器中退回主机

[root@b743f8bf5229 /]# exit

exit

[root@hadoop102 cb]# ls

a.txt  bin

列出所有运行的容器

docker ps 命令

# docker ps 命令

   # 列出当前正在运行的容器

-a # 列出当前正在运行的容器并带出历史运行过的容器

-n=? # 显示最近创建的容器

-q # 只显示容器的编号


[root@hadoop102 cb]# docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@hadoop102 cb]# docker ps -a

CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                       PORTS     NAMES

b743f8bf5229   centos         "/bin/bash"   3 minutes ago   Exited (130) 2 minutes ago             busy_wu

6023f9e334bb   feb5d9fea6a5   "/hello"      5 hours ago     Exited (0) 5 hours ago                 eloquent_meitner


退出容器

exit  # 直接容器停止并退出

Ctrl + p + q  # 容器不停止退出

删除容器

docker rm 容器id

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 run -d 镜像名

[root@hadoop102 cb]# docker run -d centos


# 问题 发现centos停止

# 需要一个前台命令

查看日志

docker logs -tf --tail


-tf   # 显示日志

--tail number # 显示日志的条数

[root@hadoop102 cb]# docker logs -tf --tail 10 e6eeb24de0bc

查看容器中的进程信息ps

# docker top 容器id

[root@hadoop102 cb]# docker top e6eeb24de0bc

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD

root                3081                3061                0                   20:29               ?                   00:00:00            /bin/bash

查看镜像源数据

# 命令 docker inspect 容器id

[root@hadoop102 cb]# docker inspect e6eeb24de0bc

进入当前正在运行的容器

# 命令

docker exec -it 容器id bashshell


# 测试

[root@hadoop102 cb]# docker exec -it e6eeb24de0bc /bin/bash

[root@e6eeb24de0bc /]# ls

bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var

dev  home  lib64  media       opt  root  sbin  sys  usr

[root@e6eeb24de0bc /]# ps

  PID TTY          TIME CMD

   15 pts/1    00:00:00 bash

   30 pts/1    00:00:00 ps


# 方式2

docker attach 容器id


# 测试

[root@hadoop102 cb]# docker attach e6eeb24de0bc

[root@e6eeb24de0bc /]#


# docker exec    # 进入容器后开启一个新的终端,可以在里面操作(常用)

# docker attach  # 进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目的的主机路径

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
0
分享
相关文章
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
123 12
Docker——阿里云服务器利用docker搭建redis集群
本文详细记录了使用Docker搭建Redis集群的过程,包括检查Docker和Docker Compose的安装、创建Redis配置文件、编写`docker-compose.yml`文件、启动Redis节点、创建Redis集群的具体步骤,以及最终的验证方法。文章还提供了在多服务器环境下搭建Redis集群的注意事项,帮助读者全面了解 Redis 集群的部署流程。
506 70
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
189 28
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
439 0
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
946 4
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
219 18
【赵渝强老师】数据库不适合Docker容器化部署的原因
获取Docker基础使用方法:让容器化变得轻松。
对于Docker的初学者来说,了解这些基础知识点就足够了。实践是最好的老师,越是动手操作,对Docker的理解会越深。祝阅读这篇文章的开发者们一切顺利,愿你在Docker的海洋中航行顺利!
116 17
Docker容器的实战讲解
这只是Docker的冰山一角,但是我希望这个简单的例子能帮助你理解Docker的基本概念和使用方法。Docker是一个强大的工具,它可以帮助你更有效地开发、部署和运行应用。
155 27

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问