docker安装与简单使用

news/2025/3/13 23:13:21/

文章目录

    • docker安装
      • 1.卸载原来安装过的docker,如果没有安装可以不需要卸载
      • 2.安装yum相关的工具,下载docker-ce.repo文件
      • 3.安装docker-ce软件
      • 4.启动docker服务
    • docker使用nginx
    • docker使用mysql
    • 解决启动失败的问题

docker安装

centos下安装docker

这里参考docker官方教程:https://docs.docker.com/engine/install/centos/

1.卸载原来安装过的docker,如果没有安装可以不需要卸载

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2.安装yum相关的工具,下载docker-ce.repo文件

[root@localhost ~]# yum install -y yum-utils -y[root@localhost ~]# yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
下载docker-ce.repo文件存放在/etc/yum.repos.d
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo      CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    docker-ce.repo

3.安装docker-ce软件

container engine 容器引擎
docker是一个容器管理的软件
docker-ce 是服务器端软件 server
docker-ce-cli 是客户端软件 client
docker-compose-plugin 是compose插件,用来批量启动很多容器,在单台机器上
containerd.io 底层用来启动容器的

[root@localhost yum.repos.d]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
[root@localhost yum.repos.d]# docker --version
Docker version 20.10.17, build 100c701

4.启动docker服务

[root@localhost ~]# systemctl start docker
[root@localhost ~]# ps aux|grep docker
root       1893  0.9  3.4 1160644 64268 ?       Ssl  09:58   0:00 /usr/bin/dockerd H fd:// --containerd=/run/containerd/containerd.sock
root       2015  0.0  0.0 112824   988 pts/0    S+   09:59   0:00 grep --color=auto docker     设置docker服务开机启动
[root@cali yum.repos.d]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

docker启动的每一个容器背后就是一个linux进程

docker ps 查看有哪些docker容器在运行

docker images 查看有哪些已下载的镜像

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

docker使用nginx

下载nginx镜像

镜像: 来源默认从docker官方提供的网站dockerhub去下载

https://hub.docker.com/:Docker Hub is the world’s largest library and community for container images

[root@localhost ~]# docker pull  nginx
Using default tag: latest
latest: Pulling from library/nginx
7a6db449b51b: Pull complete
ca1981974b58: Pull complete
d4019c921e20: Pull complete
7cb804d746d4: Pull complete
e7a561826262: Pull complete
7247f6e5c182: Pull complete
Digest: sha256:b95a99feebf7797479e0c5eb5ec0bdfa5d9f504bc94da550c2f58e839ea6914f
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    2b7d6430f78d   2 days ago   142MB

启动nginx

docker run -d -p 8090:80 --name my-nginx1 nginx

docker run 是启动容器的命令、 -d 在后台运行 daemon 守护进程、

-p 8090:80 指定端口映射 访问本机的8090端口,转发到docker容器的80端口、

–name my-nginx1 指定容器的名字(可以在容器里启动多个nginx,故自定义命名)、 nginx 是镜像的名字

[root@localhost ~]# docker run -d -p 8090:80 --name  my-nginx1  nginx
a96a9f4a606fe9ae8e24883afe6bac56b74466aba6a0f99100fc09bd54cc3a5f
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
a96a9f4a606f   nginx     "/docker-entrypoint.…"   12 seconds ago   Up 10 seconds   0.0.0.0:8090->80/tcp, :::8090->80/tcp   my-nginx1

这是我们可以去测试一下nginx服务是否生效

在浏览器中访问ip+端口 ,这里注意是访问本机的ip及设置的进程端口号,docker会映射到内部的nginx服务。
在这里插入图片描述

docker使用mysql

下载mysql镜像

可以指定下载mysql的指定版本,如不指定版本则默认下载最新的版本lastest

[root@localhost ~]# docker pull mysql:5.7.39
5.7.39: Pulling from library/mysql
9815334b7810: Pull complete
f85cb6fccbfd: Pull complete
b63612353671: Pull complete
447901201612: Pull complete
9b6bc806cc29: Pull complete
24ec1f4b3b0d: Pull complete
207ed1eb2fd4: Pull complete
27cbde3edd97: Pull complete
0a5aa35cc154: Pull complete
e6c92bf6471b: Pull complete
07b80de0d1af: Pull complete
Digest: sha256:c1bda6ecdbc63d3b0d3a3a3ce195de3dd755c4a0658ed782a16a0682216b9a48
Status: Downloaded newer image for mysql:5.7.39
docker.io/library/mysql:5.7.39
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mysql        5.7.39    daff57b7d2d1   27 hours ago   430MB
nginx        latest    2b7d6430f78d   2 days ago     142MB

启动mysql

启动时需要注意端口的设置,本机如果已经安装过mysql那么3306端口是已经被占用的,这时可以设置其他的任意未被使用的端口

[root@localhost ~]# docker run -d --name sc-mysql-01 -p 33060:3306 -e MYSQL_ROOT_PASSWORD='sc123456' mysql:5.7.39 
860e9a975abbb4a95f2f75163cccdc6f632f1948deba62ea3af6447e851b49a2
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                                    NAMES
fb8f451d71f3   mysql:5.7.39   "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   33060/tcp, 0.0.0.0:33060->3306/tcp, :::33060->3306/tcp   sc-mysql-1
bda1e5c73838   nginx          "/docker-entrypoint.…"   3 hours ago     Up 3 hours     0.0.0.0:8090->80/tcp, :::8090->80/tcp                    my-nginx1

进入mysql进行使用

docker exec -it sc-mysql-01 bash

docker exec 进入容器内容,执行命令 execute、-it 开启一个终端,交互式登陆进入、sc-mysql-1 容器的名字、bash 进入容器里运行的程序

[root@localhost ~]# docker exec -it sc-mysql-01 bash
bash-4.2#
bash-4.2# mysql -uroot -p'sc123456'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.39 MySQL Community Server (GPL)Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)mysql> quit;
Byebash-4.2# exit
exit

开启多个mysql

[root@localhost ~]# docker run -d --name sc-mysql-2 -p 33061:3306  -e MYSQL_ROOT_PASSWORD='sc123456'  mysql:5.7.39
abf4f29540f44d3ababdd9c444d4d9bd44de0360cbcc585d406de918e4968fcc
[root@cali yum.repos.d]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                                    NAMES
abf4f29540f4   mysql:5.7.39   "docker-entrypoint.s…"   5 seconds ago   Up 3 seconds   33060/tcp, 0.0.0.0:33061->3306/tcp, :::33061->3306/tcp   sc-mysql-2
fb8f451d71f3   mysql:5.7.39   "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   33060/tcp, 0.0.0.0:33060->3306/tcp, :::33060->3306/tcp   sc-mysql-1
bda1e5c73838   nginx          "/docker-entrypoint.…"   3 hours ago     Up 3 hours     0.0.0.0:8090->80/tcp, :::8090->80/tcp                    my-nginx
[root@localhost ~]# 

启动后也可以在Windows中使用SQLyong去进行连接mysql

解决启动失败的问题

如果在docker run 启动服务时有失败的现象

可以使用docker ps -a 先查看详细信息

Exited即为启动失败的服务

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS                                   NAMES
a5b752cc4485   mysql:5.7.39   "docker-entrypoint.s…"   6 minutes ago   Exited (1) 6 minutes ago                                           sc-mysql-1
bda1e5c73838   nginx          "/docker-entrypoint.…"   3 hours ago     Up 3 hours                 0.0.0.0:8090->80/tcp, :::8090->80/tcp   sc-nginx

查看容器启动失败的日志

[root@localhost ~]# docker logs a5b752cc4485

找到错误原因后就可以在下一次启动时更正这个错误

但是并不能直接去重新启动这个服务

删除启动失败的容器,正在运行的容器不能直接删除

[root@localhost ~]# docker rm sc-mysql-1  
sc-mysql-1

删除后再去docker run服务即可

如果在服务运行时,关闭防火墙或者清除防火墙规则,会导致iptables里的docker相关SNAT或者DNAT等策略失效,那么容器将不能和外面的机器通信

重启docker服务,会自动添加docker相关的iptables规则

service docker restart

删除启动失败的容器,正在运行的容器不能直接删除

[root@localhost ~]# docker rm sc-mysql-1  
sc-mysql-1

删除后再去docker run服务即可

如果在服务运行时,关闭防火墙或者清除防火墙规则,会导致iptables里的docker相关SNAT或者DNAT等策略失效,那么容器将不能和外面的机器通信

重启docker服务,会自动添加docker相关的iptables规则

service docker restart

不过会导致所有的正在运行的容器暂停,再重新启动即可


http://www.ppmy.cn/news/853994.html

相关文章

《大大简化每次运行bochs的命令行》ubuntu里安装vscode + makefile文件基本编写 + shell命令

📍安装vscode 启动vscode 如图打开商店,在搜索栏里输入visual studio code,安装即可 在随便一个命令行里输入code即可打开vscode 📍makefile文件基本编写 在实验项目文件夹里创建makefile文件(vscode直接能快捷创…

YOLO下载库的问题

问题描述:下载gdown库时,出现403错误,具体如下 ERROR: HTTP error 403 while getting https://pypi.tuna.tsinghua.edu.cn/packages/e7/0c/9fb84c67bd827902bfadcdd209796ef32f95df8b23c39a6 06a5ee517b314/gdown-4.5.3.tar.gz#sha2566cbf7dd…

spark找不到服务器文件,在Standalone模式下执行Spark命令所产生的临时目录导致硬盘爆满的解决方法...

昨天,在执行spark-sql时,查询数据量超过1000万行,数据量大小7.6G,出现系统盘占用突然变高的情况,Job任务在运行过程中产生大量的临时目录位置,导致某个分区磁盘写满,主要原因spark运行产生临时目录的默认路径/tmp/spark检查为 /tmp 目录下,spark生成的临时目录占用了大…

动态路由 TheRouter 的设计与实践

这篇文章是我在 2022【GIAC 全球互联网架构大会】分享时所讲内容的文字版本,修改删减了演讲时的冗余言语,现开放给大家阅读,希望能给买不到票参加分享的 开源实验室 读者带来帮助。 大家好,今天跟大家分享的是一个开源路由TheRou…

IDEA懒人必备插件,自动生成单元测试,太爽了!

一安 一安未来 2023-03-01 08:00 发表于北京 收录于合集#第三方工具30个 大家好,我是一安~ 今天来介绍一款工具Squaretest,它是一款自动生成单元测试的插件,为什么会用到它? 主要因为最近公司上了代码质量管控的指…

[已解决]QObject::moveToThread: Current thread is not the object‘s thread...... --carla调试遇到的报错问题(1)

我在carla安装RGB相机遇到的报错: 1.线程报错:QObject::moveToThread: Current thread (0x7f632833ba40) is not the objects thread (0x7f63283b1ec0). Cannot move to target thread (0x7f632833ba40) 2.ModuleNotFoundError: No module named conda 文…

安卓学习笔记01:安装集成开发环境Android Studio

文章目录 一、下载Android Studio二、安装Android Studio1、双击安装程序进入安装向导2、选择安装组件3、选择安装位置4、选择开始菜单文件夹5、按照配置进行安装三、启动并配置Android Studio1、选择是否导入先前的Android Studio设置2、选择安装类型3、选择界面主题4、选择An…

Android 性能优化梳理

目录 目录 1、内存泄露优化 1.1 抓取内存泄露方法 2、启动优化 2.1、冷启动 2.1.1 抓取冷启动方法 2.2、热启动 2.2.1 抓取热启动方法 2.3 启动优化 3、卡顿优化 3.1、CPU占用查询 3.1.1 通过脚本命令抓取CPU占用 3.1.2 抓取trace文件 3.1.3 CPU分析 3.1.4 通过…