Docker

一、简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
简单说,docker是一种容器技术,解决软件跨环境迁移问题
docker官方网址: www.docker.com

二、安装docker
yum update
安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
docker -v

三、docker常用操作
1、服务相关命令
启动docker服务
systemctl start docker
停止docker服务
systemctl stop docker
重启docker服务
systemctl restart docker
查看docker服务状态
systemctl status docker
设置docker开机启动
systemctl enable docker

------------------------启动docker服务---------------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# systemctl start docker

------------------------查看docker服务状态--------------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2023-03-17 16:27:40 CST; 5s ago
     Docs: https://docs.docker.com
 Main PID: 113030 (dockerd)
    Tasks: 7
   Memory: 51.4M
   CGroup: /system.slice/docker.service
           └─113030 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

------------------------关闭docker服务--------------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

------------------------设置docker服务开机启动--------------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# systemctl enable docker
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# systemctl enable docker.socket

--------------------检查docker服务开机启动是否设置成功------------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# systemctl list-unit-files |grep docker
docker.service                             enabled        
docker.socket                              enabled        
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# 

2、镜像相关的命令
查看镜像
docker images
docker images -q 查看所有的镜像id

[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        7         f9c173b0f012   2 weeks ago     117MB
mysql        5.7       c20987f18b13   15 months ago   448MB
centos       6         5bf9684f4720   18 months ago   194MB
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker images -q
f9c173b0f012
c20987f18b13
5bf9684f4720

搜索镜像
dokcer search redis

[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker search redis
NAME                                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                               Redis is an open source key-value store that…   11927     [OK]       
redislabs/redisearch                Redis With the RedisSearch module pre-loaded…   56                   
redislabs/redisinsight              RedisInsight - The GUI for Redis                81                   

拉取镜像
docker pull redis
docker pull redis:5.0
删除镜像(两种删除方式,ID或者名称)
docker rmi IMAGE_ID
docker rmi redis:5.0
删除所有镜像
docker rmi docker images -q

------------拉取镜像--------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Pull complete 
c7a4e4382001: Pull complete 
4044b9ba67c9: Pull complete 
c8388a79482f: Pull complete 
413c8bb60be2: Pull complete 
1abfd3011519: Pull complete 
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest

----------------查看镜像--------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        7         f9c173b0f012   2 weeks ago     117MB
redis        latest    7614ae9453d1   15 months ago   113MB
mysql        5.7       c20987f18b13   15 months ago   448MB
centos       6         5bf9684f4720   18 months ago   194MB

---------------删除镜像---------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker rmi redis:latest
Untagged: redis:latest
Untagged: redis@sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
------------注意:内容太多,此处删除部分日志------------

---------------删除全部镜像---------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker rmi `docker images -q`
Untagged: redis:7
Untagged: redis@sha256:e50c7e23f79ae81351beacb20e004720d4bed657415e68c2b1a2b5557c075ce0
Deleted: sha256:f9c173b0f012c8d5104c5136791a69ecc8defb2908e93c9dec7823ba70298336
Deleted: sha256:f945cdd2b8db84501eb5bc574c810d2dd07418268db7781abff68a24bed4277c
Deleted: sha256:0dabe9a2b683a78a5dad01a1327699daee00d80bdf6b1344730ca44330faa642
Deleted: sha256:13da8b5942ee3ca6cdfac2db74a2a6f40c4c87c5d3b9fcc6c817af8dca5225f0
Deleted: sha256:c3a6d4e98b6669f124a2eeec20b69cb6c7f13e1ff160332f1c87bbc481b1a09d
Deleted: sha256:3ae39e4c4c0622305af1672d716236c3537e2a8013c851e5feba5a8498742bb1
Deleted: sha256:650abce4b096b06ac8bec2046d821d66d801af34f1f1d4c5e272ad030c7873db
Untagged: mysql:5.7
Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76
Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989
Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40f
Deleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150
Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92
Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2
Untagged: centos:6
Untagged: centos@sha256:a93df2e96e07f56ea48f215425c6f1673ab922927894595bb5c0ee4c5a955133
Deleted: sha256:5bf9684f472089d6d5cb636041d3d6dc748dbde39f1aefc374bbd367bd2aabbf
Deleted: sha256:af6bf1987c2eb07d73f33836b0d8fd825d7c785273526b077e46780e8b4b2ae9
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# 

-------------再次查看,发现镜像已经空了---------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# 

docker官方镜像站点
hub.docker.com

3、Docker容器相关命令
查看容器
docker ps 查看正在运行的容器
docker ps -a 查看所有的容器,包括运行中的和未运行的
docker ps -aq 查看所有的容器id

创建容器
docker run -it --name=redis1 redis:5 /bin/bash
docker run -id --name=redis2 redis:5 /bin/bash
参数说明
-i 保持运行,通常与-t同时使用,加入it这两个参数后,容器创建后自动进入容器,退出容器后,容器自动关闭
-t 为容器重新分配一个伪终端,通常与-i同时使用
-d 以守护(后台)模式运行容器,创建一个容器后在后台运行,需要使用docker exec进入容器,退出后容器不会关闭
–name 指定容器的名字
redis:5 指定镜像的名称和版本
/bin/bash 指定进入容器的初始化命令
-it 创建的容器,创建完成后就进入容器,退出就关闭容器

进入容器
docker exec -it redis1 /bin/bash

启动容器
docker start redis1

停止容器
docker stop redis1

删除容器
docker rm redis1

删除所有的容器
docker rm docker ps -aq

查看容器信息
docker inspect redis1

[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker run -it --name=centos1 centos:7 /bin/bash
[root@66e6acf23bb8 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@66e6acf23bb8 /]# 
[root@66e6acf23bb8 /]# exit
exit
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                      PORTS     NAMES
66e6acf23bb8   centos:7   "/bin/bash"   25 seconds ago   Exited (0) 10 seconds ago             centos1
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# 
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker run -id --name=centos2 centos:7 /bin/bash
d6539952b476db44a4beeb61f8c43523af0143b2efe39748bb37975bdd49a127
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# 
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker exec -it centos2 /bin/bash
[root@d6539952b476 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@d6539952b476 /]# exit
exit
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
d6539952b476   centos:7   "/bin/bash"   25 seconds ago   Up 24 seconds             centos2
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS                      PORTS     NAMES
d6539952b476   centos:7   "/bin/bash"   29 seconds ago       Up 28 seconds                         centos2
66e6acf23bb8   centos:7   "/bin/bash"   About a minute ago   Exited (0) 49 seconds ago             centos1
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# 
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# 
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker stop centos2
centos2
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker start centos1
centos1
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS        PORTS     NAMES
66e6acf23bb8   centos:7   "/bin/bash"   About a minute ago   Up 1 second             centos1
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS                        PORTS     NAMES
d6539952b476   centos:7   "/bin/bash"   About a minute ago   Exited (137) 12 seconds ago             centos2
66e6acf23bb8   centos:7   "/bin/bash"   About a minute ago   Up 6 seconds                            centos1
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker stop centos1
centos1
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker rm centos1
centos1
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS                        PORTS     NAMES
d6539952b476   centos:7   "/bin/bash"   About a minute ago   Exited (137) 54 seconds ago             centos2
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker rm `docker ps -aq`
d6539952b476
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# 

4、数据卷
数据卷是宿主机中的一个目录或者文件
当容器目录和数据卷目录绑定后,对方的修改会立即同步
一个数据卷可以同时被多个容器挂载
一个容器可以同时挂载多个数据卷
数据卷的作用总结:
1)容器数据的持久化
2)客户端和容器数据交换
3)容器之间的数据交换

配置数据卷:
创建启动容器时,使用-v参数设置数据卷:
docker run … -v 宿主机目录(文件):容器目录(文件) …
示例:
docker run -it --name=c1 -v /root/data1:/root/data1 centos:7 /bin/bash
docker run -it --name=c2 -v /root/data2:/root/data2 -v /root/data3:/root/data3 centos:7 /bin/bash
注意事项:
1)目录必须是绝对路径
2)如果目录不存在,会自动创建
3)可以挂载多个数据卷

-----------------查看当前路径下是否有data1和data2目录------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# pwd
/root
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# ls
docker_file  mysql
-----------创建容器,同时挂载data1和data2目录,此时/root下没有data1和data2目录,系统会自动创建---------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker run -id --name=c1 -v /root/data1:/root/data1 -v /root/data2:/root/data2 centos:7 /bin/bash
ce00ce7bddbba24ad1253f4475dce54ef8c168fe952afbfe4c1e0d18d3d1342f
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
ce00ce7bddbb   centos:7   "/bin/bash"   5 seconds ago   Up 4 seconds             c1

--------------容器创建完成后,目录自动创建--------------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# ls
data1  data2  docker_file  mysql

----------进入/root/data1目录下,写一个文件data1,然后进入docker查看是否能看到该文件-------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# cd data1/
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# ls
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# echo "data1" > data1
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# cat data1 
data1
------------进入容器,查看/root/data1下的内容,与宿主机看到的一致----------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker exec -it c1 /bin/bash
[root@ce00ce7bddbb /]# cd /root/data1/
[root@ce00ce7bddbb data1]# ls
data1
[root@ce00ce7bddbb data1]# cat data1 
data1
[root@ce00ce7bddbb data1]# ls
data1

---------在docker中进入data2,写入部分数据,然后在宿主机目录下查看,检查数据是否一致----------------
[root@ce00ce7bddbb data1]# cd ..
[root@ce00ce7bddbb ~]# ls
anaconda-ks.cfg  data1  data2
[root@ce00ce7bddbb ~]# cd data2 
[root@ce00ce7bddbb data2]# ls
[root@ce00ce7bddbb data2]# echo "data2" > data2 
[root@ce00ce7bddbb data2]# ls
data2
[root@ce00ce7bddbb data2]# cat data2 
data2
[root@ce00ce7bddbb data2]# exit
exit
----------在宿主机对应的目录下查看文件内容是否一致-------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# cd /root/data/data2
[root@iZ2zei1k90cd5uvz8ilmc7Z data2]# ls
data2
[root@iZ2zei1k90cd5uvz8ilmc7Z data2]# cat data2 
data2

数据卷容器:
创建一个容器,挂载一个目录,让其他容器继承自该容器(–volumes-from)
通过简单的方式实现数据卷配置

配置数据卷容器
1)创建启动c3数据卷容器,使用-v参数设置数据卷
docker run -id --name=c3 -v /root/data:/root/data centos:7 /bin/bash
2)创建启动c1 c2容器,使用–volumes-from 参数设置数据卷
docker run -id --name=c1 --volumes-from c3 centos7:/bin/bash
docker run -id --name=c2 --volumes-from c3 centos7:/bin/bash

-----------创建数据卷容器c3---------------------
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# docker run -id --name=c3 -v /root/data1:/root/data1 centos:7 /bin/bash
eb6ec7c3b902e900726e1fa6532c79d8aab925fa621a9f34f9d8924ad22d5414
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# ls
data1  docker_file  mysql
[root@iZ2zei1k90cd5uvz8ilmc7Z ~]# cd data1/
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# ls
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# echo '1111' > a
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# cat a 
1111
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# ls
a

-----------到容器中查看数据是否一致------------
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# docker exec -it c3 /bin/bash
[root@eb6ec7c3b902 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@eb6ec7c3b902 /]# cd /root/data1/
[root@eb6ec7c3b902 data1]# ls
a
[root@eb6ec7c3b902 data1]# cat a 
1111
[root@eb6ec7c3b902 data1]# exit
exit
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
eb6ec7c3b902   centos:7   "/bin/bash"   56 seconds ago   Up 55 seconds             c3

-----------创建c1和c2容器,使用--volumes-from设置数据卷--------
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# docker run -id --name=c1 --volumes-from c3 centos:7 /bin/bash
88409ed617242dc495a0c3baa1a1a8cb5e083a4c7dde9bc9d56b9c1539f1c63c
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# docker run -id --name=c2 --volumes-from c3 centos:7 /bin/bash
021f4aab0d8c13a1f9fe59d104f6f1183fba514a42b2cc82a5e4060db5ed2a9f
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
021f4aab0d8c   centos:7   "/bin/bash"   5 seconds ago    Up 5 seconds              c2
88409ed61724   centos:7   "/bin/bash"   30 seconds ago   Up 29 seconds             c1
eb6ec7c3b902   centos:7   "/bin/bash"   2 minutes ago    Up 2 minutes              c3

---------------到容器中查看数据是否一致-----------------
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# docker exec -it c1 /bin/bash
[root@88409ed61724 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@88409ed61724 /]# cd /root/data1/
[root@88409ed61724 data1]# ls
a
[root@88409ed61724 data1]# cat a 
1111
[root@88409ed61724 data1]# exit
exit
[root@iZ2zei1k90cd5uvz8ilmc7Z data1]# docker exec -it c2 /bin/bash
[root@021f4aab0d8c /]# cd /root/data1/
[root@021f4aab0d8c data1]# cat a 
1111
[root@021f4aab0d8c data1]# 

5、docker加载本地镜像(压缩文件)
docker load -i 压缩文件名称
docker images 查看镜像是否加载完成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值