docker学习笔记(一)安装docker及镜像

本文详细介绍了在CentOS系统上安装Docker的步骤,包括卸载旧版本、安装相关工具、配置yum-repo、安装DockerCE及其客户端,以及启动Docker服务。还展示了如何使用Docker运行Nginx和MySQL服务,并处理启动失败问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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  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;
Bye

bash-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

解决启动失败的问题

思路:cha'kan

如果在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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值