Docker笔记

一、安装

1、卸载旧版本

yum remove docker docker-client docker-client-latest docker-common docker-latest \

                    docker-latest-logrotate docker-logrotate docker-engine

2、需要的安装包

yum install -y yum-utils

3、设置镜像仓库

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #国外地址

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #阿里云

4、更新yum软件包索引

yum makecache fast

5、安装docker docker-ce社区版(ee是企业版) 

yum install docker-ce docker-ce-cli containerd.io

6、启动Docker

systemctl start docker

7、查看docker版本

docker version

8、执行第一个docker hello-word

docker run hello-world

9、查看下载的hello-world镜像

docker images

二、卸载Docker

1、卸载依赖

yum remove docker-ce docker-ce-cli containerd.io

2、删除资源

rm -rf /var/lib/docker #docker默认工作路径

rm -rf /var/lib/containerd

三、阿里云镜像加速

1、配置镜像地址

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://po1qcvly.mirror.aliyuncs.com"]

}

EOF

2、重置守护进程

sudo systemctl daemon-reload

3、重启Docker

sudo systemctl restart docker

四、Docker底层原理

Docker是一个C/S结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问!

Client-Server接收到Client-Client的指令,就会执行这个命令

1、Docker为什么比VM快

1)Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。

2)Docker利用的是宿主机的内核,而不需要Guest OS,因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。

总结:新建一个容器的时候,Docker不需要向虚拟机一样重新加载一个操作系统内核,避免引导,虚拟机是加载Guest OS,分钟级别的而Docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级!

五、Docker常用命令

1、帮助命令

docker version #显示docker的版本信息

docker info #显示docker的系统信息 包括镜像和容器的数量

docker 命令 --help #万能命令

帮助文档地址:https://docs.docker.com/reference/

2、镜像命令

docker images 查看所有本地的主机上的镜像

[root@localhost /]# docker images

REPOSITORY      TAG      IMAGE ID              CREATED      SIZE

hello-world            latest     d1165f221234       4 months ago 13.3kB

REPOSITORY       镜像的仓库源

TAG                       镜像的标签

IMAGE ID              镜像的id

CREATED             镜像的创建时间

SIZE 镜像的大小

    -a, --all          列出所有的镜像

    -q, --quiet      只显示镜像的Id

docker search 搜索镜像

#搜索mysql镜像

docker search mysql

#可选项,通过搜藏来过滤

--filter =stars=3000      #搜索出来的镜像就是stars大于3000

docker pull 下载镜像

#下载镜像

docker pull 镜像名[:tag]版本默认最新版

[root@localhost /]# docker pull mysql

docker pull mysql === docker pull docker.io/library/mysql:latest

#指定版本下载

[root@localhost /]# docker pull mysql:5.7

docker rmi 删除镜像

#删除指定ID镜像

docker rmi -f 镜像ID

#删除指定ID镜像 (多个)

docker rmi -f 镜像ID 镜像ID 镜像ID 镜像ID

#递归删除所有镜像

docker rmi -f $(docker images -aq) 意思是全部镜像的id

3、容器命令

注意:有了镜像才能 通过镜像创建容器

docker run [可选参数] image 新建容器并启动

docker run [可选参数] image

#参数说明

--name=“Name” 容器名称 tomcat01

-d 后台方式运行

-it 使用交互方式运行,进入容器查看内容

-p 指定容器的端口 -p 8080:8080

    -p ip:主机端口:容器端口

    -p 主机端口:容器端口(常用)

    -p 容器端口

-P 随机指定端口

#测试 进入容器 ,启动以交互方式运行后面是操作控制台 一般Linux的在这个路径

[root@localhost /]# docker run -it centos /bin/bash

#查看容器内的centos基础版本很多命令都是不完善的 (centos里面创建centos并进入)

[root@1797b984e8ee /]# ls

bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

#从容器中退回到主机

[root@1797b984e8ee /] exit # exit

[root@localhost /]# ls

bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

docker ps 列出所有正在运行的容器

# docker ps 命令

空 # 列出当前正在运行的容器

-a # 列出当前正在运行的容器 随便带出历史的内容

-n=?# 显示最近创建的容器 ?后面是显示的个数

-q # 只显示容器的编号

#列出当前在运行的容器 (下面表示没有)

[root@localhost /]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

#查看曾经运行过的容器

[root@localhost /]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME

Se270f5d60b2c centos "/bin/bash --name=ba…" 5 minutes ago Exited (2) 5 minutes ago recursing_gagarin

b80479a9e9b3  centos "/bin/bash" 9 minutes ago Exited (0) 7 minutes ago strange_jemison

fb14b327581a   d1165f221234 "/hello" 8 hours ago Exited (0) 8 hours ago eager_varahamihira

exit、Ctrl + P + Q 退出容器

#退出容器

exit                #停止容器并退出容器

Ctrl + P + Q   #只是退出容器,容器仍在运行

docker rm 删除容器

docker rm                                   #容器id 删除指定容器

docker rm -f $(docker ps -aq)     #删除所有容器

docker ps -a -q|xargs docker rm #删除所有容器

docker start、docker stop 启动和停止容器

docker start 容器id         #启动容器

docker restart 容器id      #重启动容器

docker stop 容器id         #停止当前正在运行动容器

docker kill 容器id            #强制停止当前容器

其他命令

#通过命令

docker run -d 镜像名

[root@bogon /]# docker run -d centos

#问题 docker ps 时候发现 centos停止了

#常见的坑,docker 容器后台运行,就必须要有一个前台进程 docker发现没有命令就会停止

#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

docker logs 查看日志

docker logs -f -t --tail 10 #容器id 没有日志 

# 自己编写一段shell脚本

[root@bogon /]# docker run -d centos /bin/sh -c "while true;do echo Sxr;sleep 1;done"

[root@bogon /]# docker ps

PORTS NAMES

d5d5d925582f centos 

#显示日志

-tf #显示日志 f带上时间

--tail number #要显示的日志条数

[root@bogon /]# docker logs -f -t --tail 10 d5d5d925582f 

[root@bogon /]# docker logs -tf --tail 10 d5d5d925582f 

docker top 查看容器中的进程信息ps

top命令

[root@bogon /]# docker top 容器id

UID PID PPID C STIME TTY TIME

root 3064 3044 0 09:37 ? 00:00:00

root 3117 3064 0 09:38 ? 00:00:00

docker inspect 查看进行的源数据

[root@bogon /]# docker inspect

docker exec 进入当前正在运行的容器

#我们通常容器都是使用后台方式运行的需要进入容器,修改一些配置

#命令

docker exec -it 容器id bashshell

# bashshell 操作 linux或者别的操作命令

#测试

[root@bogon /]# docker exec -it d5afb8e77654 /bin/bash

[root@d5afb8e77654 /]# ls

bin etc lib lost+found mnt proc run srv tmp vardev home lib64 media opt root sbin sys usr

[root@d5afb8e77654 /]# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 01:37 ? 00:00:00 /bin/sh -c while true;d

root 1945 0 0 02:10 pts/0 00:00:00 /bin/bashroot 1976 1945 0 02:10 pts/0 00:00:00 ps -ef

root 1977 1 0 02:10 ? 00:00:00 /usr/bin/coreutils --co

#方式二

[root@bogon /]# 正在执行当前代码...

#docker exec :进入容器后开启一个新的终端,可以在里面操作(常用)

#docker attach :进入容器正在执行的终端,不会启动一个新的进程

docker cp 从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目的的主机路径

[root@bogon /home]# docker cp 容器id:/容器路径 /主机路径

#测试

[root@bogon /home]# docker cp 24fe5f78c8af:/home/test.java /home/

//先在容器内创建文件或目录

[root@24fe5f78c8af home]#touch test.java

[root@24fe5f78c8af home]# lstest.java

Ctrl+p+q

[root@bogon /home]# docker cp 24fe5f78c8af:/home/test.java /home/

[root@bogon /home]# ls

Sxr.java test.java www yacon

[root@bogon /home]# rm -rf Sxr.java

[root@bogon /home]# ls

test.java www yacon

#拷贝是一个手动过程未来使用

-v 数据卷的技术,可以实现数据同步

六、操作实例

1、docker部署nginx

2、docker部署tomcat

3、docker部署es+kibana

# es 暴露的端口很多

# es 非常的耗内存

# es的数据一般要放置到安全目录:挂载

# --net somenetwork 网络配置

# 启动ES 

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

#启动了 linux 就卡住了  docker stats 查看内存状态 


# 测试一下es是否启动成功

curl localhost:9200

# 赶紧关闭,增加内存的限制

docker stop 容器id

# 修改配置文件 -e 环境配置修改(使用-e限制,最高512M)

docker run -d --name elasticsearch03 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

# 查看使用情况

docker stats 容器id


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容