Docker--学习--(二)

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。


前言

官方介绍是Bulid 、ship、run any app/any where,编译、装载、运行、任何app/在任意地放都能运行
就是实现了应用的封装、部署、运行的生命周期管理只要在glibc的环境下,都可以运行
运维生成环境中:docker化
发布服务不用担心服务器的运行环境,所有的服务器都是自动分配docker,自动部署,自动安装,自动运行


一、Docker 应用的场景?

     八个Docker的真实应用场景

  • 1. 简化配置
  • 2. 代码流水线(Code Pipeline)管理
  • 3. 提高开发效率
  • 4. 隔离应用
  • 5. 整合服务器
  • 6. 调试能力
  • 7. 多租户环境
  • 8. 快速部署

二、Docker 容器使用

1、Docker 安装 Nginx

访问 Nginx 镜像库地址: https://hub.docker.com/_/nginx?tab=tags

#-1下载nginx镜像

[root@master ~]# docker pull nginx:latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest

#-2启动Nginx镜像服务

[root@master ~]#  docker run --name nginx-v20230502 -p 8000:80 -d nginx
4bf326d312f3b06b60396e774d9274a8bf02bb7e1e0ba0b67777ef787ac4834d

#-2.1启动参数说明

--name nginx-v1:容器名称。
--p 8080:80: 端口映射,将外部8080 端口映射到Nginx容器内部的 80 端口用于访问。     
--d nginx: 容器在后台运行。


#-3查看Nginx容器启动状态

[root@master ~]# docker ps  | grep nginx
4bf326d312f3        nginx                   "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes        0.0.0.0:8000->80/tcp   nginx-v20230502

#-4 查看Nginx容器端口映射

[root@master ~]# docker port 4bf326d312f3
80/tcp -> 0.0.0.0:8000

#-5查看Nginx服务日子

[root@master ~]#  docker logs -f 4bf326d312f3
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf

#-查看Nginx容器的进程

[root@master ~]# docker top  nginx-v20230502 #容器名
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                98298               98280               0                   23:21               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 98375               98298               0                   23:21               ?                   00:00:00            nginx: worker process
101                 98376               98298               0                   23:21               ?                   00:00:00            nginx: worker process
101                 98377               98298               0                   23:21               ?                   00:00:00            nginx: worker process
101                 98378               98298               0                   23:21               ?                   00:00:00            nginx: worker process
[root@master ~]#

#-6查看Nginx容器的内容

[root@master ~]# docker inspect nginx-v20230502 #容器名
[
    {
        "Id": "4bf326d312f3b06b60396e774d9274a8bf02bb7e1e0ba0b67777ef787ac4834d",
        "Created": "2023-05-02T15:21:09.732263398Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",

#-7 访问Nginx服务

#-8容器启动/停止/删除

[root@master ~]#  docker ps  | grep nginx
4bf326d312f3        nginx                                               "/docker-entrypoint.…"   15 minutes ago      Up 15 minutes       0.0.0.0:8000->80/tcp   nginx-v20230502
You have new mail in /var/spool/mail/root
[root@master ~]# docker stop 4bf326d312f3
4bf326d312f3
[root@master ~]# docker start 4bf326d312f3
4bf326d312f3
[root@master ~]#  docker ps  | grep nginx
4bf326d312f3        nginx                                               "/docker-entrypoint.…"   15 minutes ago      Up 2 seconds        0.0.0.0:8000->80/tcp   nginx-v20230502
[root@master ~]# docker stop 4bf326d312f3
4bf326d312f3
[root@master ~]# docker rm nginx-v20230502  # 删除容器,必须要现在停止容器,不然会报错
nginx-v20230502

[root@master ~]#  docker ps  | grep nginx

# 没有nginx-v20230502容器

三、Docker镜像使用

1、查看所有镜像

[root@master ~]# docker images 
REPOSITORY                                                        TAG                 IMAGE ID                CREATED             SIZE
nginx                                                                       latest              605c77e624dd         16 months ago        141MB

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

2、启动一个镜像

[root@master ~]# docker run -itd --name centos-tv2  centos:centos7

                                                                 {容器名}     {镜像名}:{TAG标签}

[root@master ~]# docker ps  | grep centos
c49f62cab925        centos:centos7                                      "/bin/bash"              10 seconds ago      Up 9 seconds                            centos-tv2

3、获取镜像

[root@master ~]# docker pull mysql

Using default tag: latest
latest: Pulling from library/mysql

4、查找镜像

[root@master ~]#  docker search centos
NAME                                                   DESCRIPTION                                                             STARS               OFFICIAL            AUTOMATED
centos                                                   DEPRECATED; The official build of CentOS.               7573                   [OK]                
kasmweb/centos-7-desktop                 CentOS 7 desktop for Kasm Workspaces                      36                    

NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似欢迎的意思可忽略
AUTOMATED: 自动构建

5、删除镜像

[root@master ~]# docker rmi -f eeb6ee3f44bd
Untagged: centos:7.6
Untagged: centos:centos7
Untagged: centos@sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Deleted: sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9
[root@master ~]# 

#容器启动正在使用的镜像,不能删除

[root@master ~]# docker rmi -f eeb6ee3f44bd
Error response from daemon: conflict: unable to delete eeb6ee3f44bd (cannot be forced) - image is being used by running container c49f62cab925
 

6、使用 docker build , 创建一个新的镜像。需要先创建一个 Dockerfile 文件

#-1 创建Dockerfile 

[root@master docker]# vi Dockerfile 

FROM    centos:7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

#-2  构建镜像

[root@master docker]#  docker build -t runoob/centos:7 .  或者  docker build /root/docker/  runoob/centos:7

[root@master docker]#  docker build -t runoob/centos:7 .
Sending build context to Docker daemon  2.048kB
Step 1/9 : FROM    centos:7


7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Status: Downloaded newer image for centos:7
 ---> eeb6ee3f44bd
Step 2/9 : MAINTAINER      Fisher "fisher@sudops.com"
 ---> Running in 3c789ae1399a
Removing intermediate container 3c789ae1399a
 ---> 31236bd2922e
Step 3/9 : RUN     /bin/echo 'root:123456' |chpasswd
 ---> Running in 610aeda3ac4f
Removing intermediate container 610aeda3ac4f
 ---> 5c24ba94cbca
Step 4/9 : RUN     useradd runoob
 ---> Running in 1889a95bc7a5
Removing intermediate container 1889a95bc7a5
 ---> 1219aa4a0015
Step 5/9 : RUN     /bin/echo 'runoob:123456' |chpasswd
 ---> Running in a85769469c76
Removing intermediate container a85769469c76
 ---> 2d5f827535de
Step 6/9 : RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
 ---> Running in e0df1a7d8aeb
Removing intermediate container e0df1a7d8aeb
 ---> 9342c633e37c
Step 7/9 : EXPOSE  22
 ---> Running in fa95637f86e0
Removing intermediate container fa95637f86e0
 ---> a114315bd0a2
Step 8/9 : EXPOSE  80
 ---> Running in 9786a7c46d52
Removing intermediate container 9786a7c46d52
 ---> ddebbc80602c
Step 9/9 : CMD     /usr/sbin/sshd -D
 ---> Running in d0623d825ad9
Removing intermediate container d0623d825ad9
 ---> 52fd9546bb78
Successfully built 52fd9546bb78
Successfully tagged runoob/centos:7
[root@master docker]# 

#-3 查看镜像

[root@master docker]# docker images
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
runoob/centos                                                     7                   52fd9546bb78        4 minutes ago       204MB

#-4 交互启动容器

[root@master docker]# docker run -t -i runoob/centos:7  /bin/bash
[root@5aed4705b2e1 /]# exit

#-5 后台启动容器
[root@master docker]# docker run -tid --name testv7 runoob/centos:7 /bin/bash
d31b2aba21c3a5cdc675f4bd679ad03ec2a770533626ee48886bb1b535cf9d04

#-6 查看启动的容器

[root@master docker]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
d31b2aba21c3        runoob/centos:7     "/bin/bash"         About a minute ago   Up About a minute   22/tcp, 80/tcp      testv7


#-7 进入容器

[root@master docker]# docker exec -it d31b2aba21c3 bash
[root@d31b2aba21c3 /]# id
uid=0(root) gid=0(root) groups=0(root)
[root@d31b2aba21c3 /]# 


总结

路虽远行则将至,事虽难做则必成!

滴水穿石,聚沙成塔!

感谢CSDN各位大佬的经典博文,在迷茫时能够拨云见日,指点迷津,让我继续一路前行!

如有侵权,请留言,我及时删除!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值