Docker 实践(上)


最近需要部署几个测试服务,只能撸起袖子自己干了。

1. Docker 安装

某云服务器操作系统如下:

$ uname -a
Linux react-master 3.10.0-1160.99.1.el7.x86_64 #1 SMP Wed Sep 13 14:19:20 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

开干,安装之前先卸载一些组件和依赖确保环境比较干净

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

Docker 的安装文件一般存放在 /var/lib/docker/ 目录中,有必要手动删除!

设置安装源

安装依赖工具包

yum install -y yum-utils

设置某云的安装源

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

非常不推荐官方源,下边这个是清华的,当然也可以考虑清华、中科大、上交大等非营利机构的

sudo yum-config-manager \
    --add-repo \
    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

安装 Docker

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

这个是安装最新的版本,当然如果想安装指定版本可以先查看当前支持那些版本

yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64            18.06.3.ce-3.el7                   docker-ce-stable
docker-ce.x86_64            18.06.2.ce-3.el7                   docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                   docker-ce-stable
<...>

比如安装 docker-ce-8.06.2.ce-3.el7 以此类推

启动服务

systemctl start docker

当然也可以随时查看 docker 服务的状态

systemctl status docker

Hello Docker

sudo docker run hello-world

设置镜像源

在上述运行 hello-world 过程中本地由于没有这个镜像,会到网上拉取镜像很大可能性会失败,如果失败这个方案可能会解决你的问题,如果还失败到网上查找更靠谱的镜像源。
具体步骤到某云工作台(需要登录),搜索容器镜像服务 左侧找到菜单 镜像加速器 根据自己操作系统选择

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://<替换掉自己的ID>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

每个人的加速地址不一样,用自己的吧

卸载

简单粗暴,直接开干

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

当然比如镜像、存储、网络等等一些文件在本地一下文件中也要删掉

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Over!

2. 镜像和容器

开始使用 Docker 之前肯定要拉取镜像到本地,然后才能有启动容器、删除容器、删除镜像等等操作

拉取镜像

docker pull centos

查看镜像

docker images

...
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
redis         latest    509b2fc82da6   2 weeks ago     117MB
hello-world   latest    d2c94e258dcb   15 months ago   13.3kB
centos        latest    5d0da3dc9764   2 years ago     231MB

搜索镜像

Terminal 中可以进行简单的搜索

docker search redis

NAME                                         DESCRIPTION                                       STARS     OFFICIAL
redis                                        Redis is the world’s fastest data platform f…   12960     [OK]
bitnami/redis-cluster                        Bitnami container image for Redis Cluster         50
bitnami/redis-exporter                       Bitnami container image for Redis Exporter        13
redis/redis-stack-server                     redis-stack-server installs a Redis server w…    80
redislabs/redisinsight                       RedisInsight - The GUI for Redis                  103

其中 OFICIAL 表示是否是官方维护的镜像,推荐使用官方镜像。但是如果碰到像拉取某个版本的镜像terminal 中搜索就无能为力了,需要到官方 Docker Hub 上搜索,可以直接复制拉取路径比如:

docker pull redis:7.4

启动容器

先跑起来

docker run -id --name=centos1 centos:latest
bb0415f760ec1f582dbafd2c2b04ba5ee00cbf353c2dc9664ab19d0089f06f20

几个参数的含义

  • i 表示交互式操作
  • d 以后台进程的方式启动
  • name 给容器起一个名字
  • 最后一个参数就是本地镜像名称

当然启动完后好像不知道怎么操作了,接下来查看容器的状态了

查看容器

  1. 查看正在运行的容器
docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   3 minutes ago   Up 3 minutes             centos1
  1. 查看所有状态的容器
docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS                        PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   4 minutes ago   Up 4 minutes                            centos1
411a817d37e9   centos:latest   "/bin/bash"   6 hours ago     Exited (137) 52 minutes ago             c1

可以通过 status 来辨别容器是否在运行中,Up 3 minutes 表示容器一直在运行中并且已经运行了三分钟,Exted ... 表示容器运行完已经退出了

进入容器

docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   30 minutes ago   Up 30 minutes             centos1

docker exec -it centos1 /bin/bash
[root@bb0415f760ec /]#

[root@bb0415f760ec /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

[root@bb0415f760ec /]# exit
exit

进入容器过后 root@bb0415f760ec 容器后的用户 其实跟运动过程中的容器的 CONTAINER ID 是一样的,其中参数含义如下

  • t 为容器分配一个虚拟终端运行
  • i 使容器保持运行状态,容器创建后自动进入容器中,退出容器后容器自动关闭

停止容器

# root @ react-master in ~ [17:18:32]
$ docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   38 minutes ago   Up 38 minutes             centos1

# root @ react-master in ~ [17:20:57]
$ docker stop centos1
centos1

# root @ react-master in ~ [17:21:14]
$ docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                           PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   38 minutes ago   Exited (137) 6 seconds ago                 centos1
411a817d37e9   centos:latest   "/bin/bash"   7 hours ago      Exited (137) About an hour ago             c1

# root @ react-master in ~ [17:21:21]
$ docker start centos1
centos1

# root @ react-master in ~ [17:22:54]
$ docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS         PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   40 minutes ago   Up 3 seconds             centos1

删除容器

# root @ react-master in ~ [17:29:33]
$ docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS         PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   6 minutes ago   Up 6 minutes             centos1
411a817d37e9   centos:latest   "/bin/bash"   7 hours ago      Up 3 seconds             c1

# root @ react-master in ~ [17:29:34]
$ docker rm c1
Error response from daemon: cannot remove container "/c1": container is running: stop the container before removing or force remove

# root @ react-master in ~ [17:29:41] C:1
$ docker stop c1
c1

# root @ react-master in ~ [17:29:58]
$ docker rm c1
c1

# root @ react-master in ~ [17:35:03]
$ docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                   PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   52 minutes ago   Up 12 minutes                      centos1

先暂停容器才能删除!当然也可以一次全部删掉

# root @ react-master in ~ [17:35:03]
$ docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                   PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   52 minutes ago   Up 12 minutes                      centos1
2c498bbe6f15   hello-world     "/hello"      7 hours ago      Exited (0) 7 hours ago             agitated_hofstadter

# root @ react-master in ~ [17:35:17]
$ docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   57 minutes ago   Up 17 minutes             centos1

# root @ react-master in ~ [17:40:49]
$ docker rm `docker ps -qa`
2c498bbe6f15
Error response from daemon: cannot remove container "/centos1": container is running: stop the container before removing or force remove

# root @ react-master in ~ [17:41:21] C:1
$ docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
bb0415f760ec   centos:latest   "/bin/bash"   58 minutes ago   Up 18 minutes             centos1

# root @ react-master in ~ [17:41:30]
$ docker stop centos1
centos1

# root @ react-master in ~ [17:41:45]
$ docker rm `docker ps -qa`
bb0415f760ec

# root @ react-master in ~ [17:41:49]
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

# root @ react-master in ~ [17:41:51]
$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

查看容器信息

# root @ react-master in ~ [17:46:34] C:125
$ docker run -id --name=c1 centos:latest
341d84b4f6763acbbf0a12bdbfb6c45c4cac4c6abb09cae397a56544da314e7e

# root @ react-master in ~ [17:46:40]
$ docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES
341d84b4f676   centos:latest   "/bin/bash"   4 seconds ago   Up 3 seconds             c1

# root @ react-master in ~ [17:46:44]
$ docker inspect c1
下边省略一大坨...

具体看那些信息后边用到的时候会重点看!

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值