栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker基础用法

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker基础用法

什么是docker

docker中的容器:

  • lxc --> libcontainer --> runc

OCI&OCF

OCI

Open Container-initiative

  • 由Linux基金会主导于2015年6月创立
  • 旨在围绕容器格式和运行时制定一个开放的工业化标准
  • 包含两个规格contains two specifications
    • 运行时规范
    • 图像规格

OCF

Open Container Format

runC 是一个 CLI 工具,用于根据 OCI 规范生成和运行容器

容器作为 runC 的子进程启动,可以嵌入到各种其他系统中,而无需运行守护程序

runC 建立在 libcontainer 之上,libcontainer 是支持数百万个 Docker 引擎安装的相同容器技术

docker提供了一个专门容纳容器镜像的站点:​​​​​​https://hub.docker.com

docker架构

docker镜像与镜像仓库

镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的。

docker对象

使用 Docker 时,您正在创建和使用映像、容器、网络、卷、插件和其他对象。

  • IMAGES
    • 镜像是一个只读模板,其中包含有关创建 docker 容器的说明。
    • 通常,一个镜像基于另一个映像,并具有一些额外的自定义。
    • 您可以创建自己的镜像,也可以只使用其他人创建并在注册表中发布的镜像。
  • CONTAINERS
    • 连接器是图像的可运行实例。
    • 您可以使用 Docker API 或 CLI 创建、运行、停止、移动或删除容器。
    • 可以将容器连接到一个或多个网络,将存储附加到该网络,甚至可以根据其当前状态创建新镜像。

安装及使用docker

docker安装

https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 阿里源链接

[root@localhost yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@localhost yum.repos.d]# ls
CentOS-Base.repo  epel-modular.repo  epel-testing-modular.repo
docker-ce.repo    epel.repo          epel-testing.repo


[root@localhost ~]# dnf -y install docker-ce

docker加速

docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。

docker的加速有多种方式:

  • docker cn
  • 中国科技大学加速器
  • 阿里云加速器(需要通过阿里云开发者平台注册帐号,免费使用个人私有的加速器)

设置开机自启

[root@localhost ~]# systemctl enable --now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor pre>
   Active: active (running) since Sun 2022-04-24 16:40:47 CST; 14s ago
     Docs: https://docs.docker.com
 Main PID: 5026 (dockerd)
    Tasks: 8
   Memory: 31.2M
   CGroup: /system.slice/docker.service
           └─5026 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/conta>

创建一个阿里云加速器

 把阿里云镜像写到daemon.json

[root@localhost ~]# cd /etc/docker/
[root@localhost docker]# ls
key.json
[root@localhost docker]# vim daemon.json

{
          "registry-mirrors": ["https://ay24c8ru.mirror.aliyuncs.com"]
}
~                                                                              
~                    

[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker      

docker info 可以看到运行环境

[root@localhost docker]# docker info
Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://ay24c8ru.mirror.aliyuncs.com/
 Live Restore Enabled: false

//看到https就说明加速器配置成功


[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:47:44 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:46:10 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
//查看他的版本号

 

[root@localhost ~]# docker search seancheng1002/httpd
NAME                  DESCRIPTION   STARS     OFFICIAL   AUTOMATED
seancheng1002/httpd 
//可以搜索别人在docker仓库做的镜像


[root@localhost ~]# docker search httpd
NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
httpd                                   The Apache HTTP Server Project                  3975      [OK]       
centos/httpd-24-centos7                 Platform for running Apache httpd 2.4 or bui…   44                   
centos/httpd                                                                            35                   [OK]
solsson/httpd-openidc                   mod_auth_openidc on official httpd image, ve…   2                    [OK]
hypoport/httpd-cgi                      httpd-cgi                                       2                    [OK]
dariko/httpd-rproxy-ldap                Apache httpd reverse proxy with LDAP authent…   1                    [OK]
manageiq/httpd                          Container with httpd, built on CentOS for Ma…   1                    [OK]
dockerpinata/httpd                                                                      1                    
publici/httpd                           httpd:latest                                    1                    [OK]
clearlinux/httpd                        httpd HyperText Transfer Protocol (HTTP) ser…   1                    
jonathanheilmann/httpd-alpine-rewrite   httpd:alpine with enabled mod_rewrite           1                    [OK]
inanimate/httpd-ssl                     A play container with httpd, ssl enabled, an…   1                    [OK]
centos/httpd-24-centos8                                                                 1                    
lead4good/httpd-fpm                     httpd server which connects via fcgi proxy h…   1                    [OK]
manageiq/httpd_configmap_generator      Httpd Configmap Generator                       0                    [OK]
e2eteam/httpd                                                                           0                    
paketobuildpacks/httpd                                                                  0                    
httpdocker/kubia-unhealthy                                                              0                    
httpdss/archerysec                      ArcherySec repository                           0                    [OK]
19022021/httpd-connection_test          This httpd image will test the connectivity …   0                    
patrickha/httpd-err                                                                     0                    
httpdocker/kubia                                                                        0                    
sandeep1988/httpd-new                   httpd-new                                       0                    
itsziget/httpd24                        Extended HTTPD Docker image based on the off…   0                    [OK]
manasip/httpd                                                                           0                    
//官方的镜像

docker常用操作
命令功能
docker searchSearch the Docker Hub for images
docker pullPull an image or a repository from a registry
docker imagesList images
docker createCreate a new conntainer
docker startStart one or more stopped containers
docker runRun a command in a new container
docker attachAttach to a runninng container
docker psList containers
docker logsFetch the logs of a container
docker restartRestart a container
docker stopStop one or more running containers
docker killKill one or more running containers
docker rmRemove onne or more containers
docker execRun a command in a running container
docker infoDisplay system-wide information
docker inspectReturn low-level information on Docker objects
[root@localhost ~]# ls /var/lib/docker
buildkit    image    overlay2  runtimes  tmp    volumes
containers  network  plugins   swarm     trust
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

//目前时空的
[root@localhost ~]# docker pull httpd
//拉最新版本的 如果要指定版本在httpd后面跟上版本号即可

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
httpd        latest    c30a46771695   4 days ago   144MB
//可以看到多了httpd

[root@localhost ~]# docker pull httpd:2.4.53
2.4.53: Pulling from library/httpd

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
httpd        2.4.53    c30a46771695   4 days ago   144MB
httpd        latest    c30a46771695   4 days ago   144MB

创建一个httpd容器

[root@localhost ~]# docker create --name web -p 80:80 httpd
b9f1f8002b43430d9fd75314340281e5b9e05981f24e6191b476a6111b913d0e

查看容器的状态

​
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS    PORTS     NAMES
b9f1f8002b43   httpd     "httpd-foreground"   46 seconds ago   Created             web

​

启动docker

​
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS    PORTS     NAMES
b9f1f8002b43   httpd     "httpd-foreground"   46 seconds ago   Created             web


[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS                               NAMES
b9f1f8002b43   httpd     "httpd-foreground"   2 minutes ago   Up 5 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   web

关闭防火墙

[root@localhost ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# vi /etc/selinux/config 


# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

[root@localhost ~]# setenforce 0

访问

 停止

[root@localhost ~]# docker stop web
web
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS                     PORTS     NAMES
b9f1f8002b43   httpd     "httpd-foreground"   5 minutes ago   Exited (0) 8 seconds ago             web

防火墙放行的方式

[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=0.0.0.0/0 service name=http accept' --permanent
success

[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule family="ipv4" source address="0.0.0.0/0" service name="http" accept

重启

[root@localhost ~]# docker restart web
web
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS         PORTS                               NAMES
b9f1f8002b43   httpd     "httpd-foreground"   19 minutes ago   Up 5 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   web

杀掉进程

[root@localhost ~]# docker kill web
web
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                       PORTS     NAMES
b9f1f8002b43   httpd     "httpd-foreground"   20 minutes ago   Exited (137) 8 seconds ago             web

查看日志

[root@localhost ~]# docker logs web
192.168.80.1 - - [24/Apr/2022:10:05:12 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:05:13 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:05:14 +0000] "GET / HTTP/1.1" 304 -
//访问的状态

192.168.80.1 - - [24/Apr/2022:10:05:12 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:05:13 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:05:14 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:06:04 +0000] "-" 408 -
192.168.80.1 - - [24/Apr/2022:10:06:40 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:06:41 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:06:42 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:06:43 +0000] "GET / HTTP/1.1" 304 -
192.168.80.1 - - [24/Apr/2022:10:06:56 +0000] "GET /sda HTTP/1.1" 404 196
192.168.80.1 - - [24/Apr/2022:10:06:58 +0000] "GET /sda HTTP/1.1" 404 196

rm删除容器

[root@localhost ~]# docker rm -f b9f1f8002b43
b9f1f8002b43
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
httpd        2.4.53    c30a46771695   4 days ago   144MB
httpd        latest    c30a46771695   4 days ago   144MB

docker  run  直接创建运行进入

[root@localhost ~]# docker run -it --name test busybox /bin/sh
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
5cc84ad355aa: Pull complete 
Digest: sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
Status: Downloaded newer image for busybox:latest
/ # 
/ # ip a
1: lo:  mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
14: eth0@if15:  mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # exit
//退出

容器停掉的情况下进去退出并运行

[root@localhost ~]# docker exec -it test /bin/sh
/ # ip a
1: lo:  mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
18: eth0@if19:  mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # exit
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS          PORTS     NAMES
045b410c8557   busybox   "/bin/sh"   5 minutes ago   Up 32 seconds             test

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/842317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号