Docker
Docker基本组成
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 \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、更新索引
yum makecache fast
5、安装docker引擎
yum install docker-ce docker-ce-cli containerd.io
6、启动
systemctl start docker
7、查看是否成功
docker version
8、运行hello world
docker run hello-world
9、查看镜像
docker images
hello-world运行流程
底层原理
docker是怎样工作的
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过socket从客户端访问
DockerServer接收到Docker-Client的指令,就会执行命令
Docker为什么比VM快
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9oOmjNWh-1628086989629)(/Users/eric/Documents/data/docker/img/004.jpeg)]
1、Docker有着比VM更少的抽象层
2、Docker利用的是宿主机的内核,VM需要是Guest OS
所以说,新建一个容器的时候,Docker不需要想虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS,分钟级别,而Docker是利用宿主机的操作系统,省略了这个负载的过程
Docker常用命令
命令文档:
https://docs.docker.com/reference/
帮助命令
docker version
docker info
docker 命令 --help
镜像命令
1、docker images :查本地所有的镜像
[root@localhost ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 4 months ago 13.3kB
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
--all , -a 显示所有的镜像 docker images -a
--filter , -f 过滤
--quiet , -q 只显示IMAGE ID docker images -aq
2、docker search :搜索镜像
[root@localhost ~]
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11188 [OK]
-f, --filter 过滤
[root@localhost ~]
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11188 [OK]
mariadb MariaDB Server is a high performing open sou… 4251 [OK]
3、docker pull 下载镜像
[root@localhost ~]
Using default tag: latest
latest: Pulling from library/mysql
33847f680f63: Pull complete
5cb67864e624: Pull complete
1a2b594783f5: Pull complete
... ...
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
[root@localhost ~]
5、docker rmi
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
容器命令
1、下载容器
docker pull centos
2、启动容器
docker run [可选参数] image
--name="xx" 指定容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P 随机指定端口
[root@localhost /]
[root@fa9877ddf76b /]
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@fa9877ddf76b /]
exit
查看运行的容器
docker ps 命令
-a 列出当前与历史运行过的容器
-n=? 显示几个
-q 只显示容器的编号
[root@localhost /]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost /]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
fa9877ddf76b centos "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago
8eb67be0c71b centos "/bin/bash" 6 minutes ago Exited (0) 4 minutes ago
f3f9aacae8c4 d1165f221234 "/hello" 2 days ago Exited (0) 2 days ago
[root@localhost /]
fa9877ddf76b
8eb67be0c71b
f3f9aacae8c4
退出容器
1、exit 容器会停止
2、Ctrl + P + Q 容器不会停止
删除容器
docker rm 容器id
docker rm -f $(docker ps -aq)
docker ps -a -q | xarge docker rm
启动和停止容器
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
[root@localhost /]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1327849a083 centos "/bin/bash" About a minute ago Up About a minute goofy_swanson
[root@localhost /]
c1327849a083
常用其他命令
后台启动
docker run -d centos
查看日志命令
docker logs 参数
“三丰云”"免费虚拟主机"“免费云服务器”
https://www.sanfengyun.com
docker logs -tf 容器id
docker logs -tf --tail 行数 容器id
[root@localhost /]
CONTAINER ID IMAGE COMMAND CREATED STATUS
e16f7c6ee9e1 centos "/bin/bash" 39 seconds ago Up 37 second
[root@localhost /]
查看容器中的进程信息
top
[root@localhost /]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e16f7c6ee9e1 centos "/bin/bash" 8 minutes ago Up 8 minutes blissful_bohr
[root@localhost /]
UID PID PPID C STIME TTY TIME CMD
root 8021 8002 0 21:46 pts/0 00:00:00 /bin/bash
[root@localhost /]
查看内存信息
docker stats
查看镜像元数据
docker inspect 容器id
进入正在运行的容器
docker exec -it 容器id bashShell
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e16f7c6ee9e1 centos "/bin/bash" 23 hours ago Up 23 hours blissful_bohr
[root@localhost ~]
docker attach 容器id
从容器内拷贝文件到主机
docker cp 容器id:路径 主机路径
[root@e16f7c6ee9e1 home]
[root@e16f7c6ee9e1 home]
test.py
[root@e16f7c6ee9e1 home]
[root@localhost ~]
[root@localhost ~]
[root@localhost home]
test.py
练习:安装Nginx
[root@localhost home]
[root@localhost home]
此时就可在浏览器访问"http://111.67.204.86:3344/"了
练习:安装tomcat
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
root@c7ca25dcf7ae:/usr/local/tomcat
练习:安装ES
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
|