服务器使用Docker的学习笔记

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 记录了个人学习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:容器内路径 目的的主机路径

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Docker 容器
在docker中安装zookeeper,并且阿里云服务器配置
在docker中安装zookeeper,并且阿里云服务器配置
201 1
|
25天前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
39 0
|
2月前
|
NoSQL Redis Docker
在docker中安装redis,并且阿里云服务器配置
在docker中安装redis,并且阿里云服务器配置
181 1
|
16天前
|
Ubuntu Linux Shell
docker学习笔记3,从入门到精通
docker学习笔记3,从入门到精通
|
16天前
|
应用服务中间件 Shell nginx
docker学习笔记2,入门到精通
docker学习笔记2,入门到精通
|
16天前
|
Ubuntu 网络协议 Docker
docker学习笔记1,入门到精通
docker学习笔记1,入门到精通
|
30天前
|
jenkins Java 持续交付
Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)
Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)
43 0
|
2月前
|
缓存 安全 Docker
Docker 部署Streamlit项目 | Streamlit如何部署到云服务器
Docker 部署Streamlit项目 | Streamlit如何部署到云服务器
|
2月前
|
Docker 容器
在docker中安装dubbo-admin,并且阿里云服务器配置
在docker中安装dubbo-admin,并且阿里云服务器配置
133 1
|
21天前
|
Docker 容器
进入Docker容器中
进入Docker容器中
34 2

热门文章

最新文章