目录
一.docker简介
- 镜像(image):
docker镜像好比是一个模板,可以通过这个模板来创建容器服务,tomcat==》run===》tomcat容器 ,可以通过这个镜像创建多个容器(最终服务运行或则项目运行就是在容器中)
- 容器(contalner):
docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的
启动 停止 删除 基本命令
目前把容器理解成简易的linux
- 仓库(repository):
仓库就是存放镜像的地方
docker HUB
阿里云。。 都有容器服务 (配置镜像加速)
二,安装docker (阿里云)
# step 0 :卸载旧的docker版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3 sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo # Step 4: 更新并安装Docker-CE //ce是社区版 ee是企业版 sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start # step 5:启动hello world docker run hello-world //代表安装成功 # step 6:查看下载镜像 docker images # 注意: # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。 # vim /etc/yum.repos.d/docker-ce.repo # 将[docker-ce-test]下方的enabled=0修改为enabled=1 # # 安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本: # yum list docker-ce.x86_64 --showduplicates | sort -r # Loading mirror speeds from cached hostfile # Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable # Available Packages # Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos) # sudo yum -y install docker-ce-[VERSION] ##卸载docker yum remove docker-ce docker-ce-cli containerd.io ##卸载依赖 rm -rf /var/lib/docker ##docker默认工作路径
阿里云镜像加速
1.登录阿里云找到弹性计算——容器服务
2.找到镜像加速地址
##虚拟机可以忽略
回顾hello world流程
底层原理
docker为什么比vm快
1.docker有更少的抽象层
三, docker常用命令
docker version ##显示docker的版本信息 docker info ##显示docker的系统,镜像和容器信息 docker ** --help ##docker帮助命令
帮助文档的地址: Overview of docker compose CLI | Docker Documentation
镜像命令
##查看本地主机上的镜像 [root@ansible /]# ansible two -m shell -a "docker images" 192.168.1.106 | CHANGED | rc=0 >> REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 12 months ago 13.3kB 192.168.1.105 | CHANGED | rc=0 >> REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 12 months ago 13.3kB ##REPOSITORY 镜像的仓库源 ##TAG 镜像的标签 ## IMAGE ID 镜像的id ##CREATED 镜像的创建时间 ##size 镜像的大小
##网页翻译能明白大意就好
##docker 搜索镜像 [root@ansible /]# ansible two -m shell -a "docker search pbs" 192.168.1.105 | CHANGED | rc=0 >> NAME DESCRIPTION STARS OFFICIAL AUTOMATED pbspro/pbspro Industry-leading workload manager and job sc… 7 [OK] biocontainers/pbsim 可选项 [root@ansible /]# ansible two -m shell -a "docker search mysql --filter=STARS=5000" //搜索大于5000收藏的mysql ##docker pull 下载镜像 [root@ansible /]# ansible two -m shell -a "docker pull mysql " 192.168.1.106 | CHANGED | rc=0 >> Using default tag: latest ##如果不写tag 默认是就是latest latest: Pulling from library/mysql 051f419db9dd: Pulling fs layer ##分层下载 docker images的核心 联合文件系统 7627573fa82a: Pulling fs layer a44b358d7796: Pulling fs layer 95753aff4b95: Pulling fs layer a1fa3bee53f4: Pulling fs layer f5227e0d612c: Pulling fs layer b4b4368b1983: Pulling fs layer f26212810c32: Pulling fs layer d803d4215f95: Pulling fs layer d5358a7f7d07: Pulling fs layer 435e8908cd69: Pulling fs layer b4b4368b1983: Waiting f26212810c32: Waiting d5358a7f7d07: Waiting d803d4215f95: Waiting 435e8908cd69: Waiting 95753aff4b95: Waiting a1fa3bee53f4: Waiting f5227e0d612c: Waiting 7627573fa82a: Download complete a44b358d7796: Download complete 95753aff4b95: Verifying Checksum 95753aff4b95: Download complete a1fa3bee53f4: Verifying Checksum a1fa3bee53f4: Download complete f5227e0d612c: Download complete f26212810c32: Verifying Checksum f26212810c32: Download complete 051f419db9dd: Verifying Checksum 051f419db9dd: Download complete 051f419db9dd: Pull complete 7627573fa82a: Pull complete a44b358d7796: Pull complete 95753aff4b95: Pull complete a1fa3bee53f4: Pull complete f5227e0d612c: Pull complete d5358a7f7d07: Download complete 435e8908cd69: Verifying Checksum 435e8908cd69: Download complete b4b4368b1983: Verifying Checksum b4b4368b1983: Download complete b4b4368b1983: Pull complete f26212810c32: Pull complete d803d4215f95: Verifying Checksum d803d4215f95: Download complete d803d4215f95: Pull complete d5358a7f7d07: Pull complete 435e8908cd69: Pull complete Digest: sha256:b9532b1edea72b6cee12d9f5a78547bd3812ea5db842566e17f8b33291ed2921 ##签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest ##真实地址 ##指定版本下载 [root@ansible /]# ansible two -m shell -a "docker pull mysql:6.0" ##要真实存在6.0
##删除容器 [root@ansible /]# ansible master -m shell -a "docker rmi 43fcfca0776d feb5d9fea6a5"
容器命令
下载一个centos镜像测试学习 [root@ansible /]# ansible master -m shell -a "docker pull centos"
新建容器并启动 [root@ansible /]# ansible master -m shell -a "docker run [可选参数] image" #参数名字 --name="Name" 容器名字 tomcat01 tomcat02 用来区分容器 -d 后台运行 -it 使用交互方式运行 进入容器查看内容 -p 指定容器端口 -p 8080 -p 主机端口:容器端口 -P 随机端口
启动并进入容器 [root@ansible /]# docker run -it centos /bin/bash [root@46dff269a133 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr 退出容器 exit 列出所有启动的容器 docker ps -a 列出正在运行的容器+历史运行运行的容器 -n 显示最近创建的容器 -q 显示容器运行的编号
退出容器 exit ##容器停止并退出 ctrl +p + q ##容器退出不停止 删除容器 docker rm 容器id 不能删除正在运行的容器 或者rm -rf docker rm -f $(docker ps -aq) #删除所有的容器
启动或者重启容器的操作 docker start 容器id docker kill 容器id docker restart 容器id [root@ansible /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 57b06d2974ee centos "/bin/bash" 9 minutes ago Up 9 minutes gifted_dhawan [root@ansible /]# docker stop 57b06d2974ee 57b06d2974ee [root@ansible /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
常用的其他命令
后台启动容器 [root@ansible /]# docker run -d centos 038cc78e33ac9be619036106bce3655245a26bec2b9f2aa198dc6304c54253e8 [root@ansible /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ##docker容器使用后台运行 必须需要一个前台进程 docker发现没有应用,就会自动停止
查看日志 dockers logs Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes) -n, --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes) [root@ansible /]# docker logs -tf 66c70fd8ab5c ##查看容器日志 -tail 10 66c70fd8ab5c ##显示最后10行
查看容器进程 [root@ansible /]# docker top 6dd9e67edc11 UID PID PPID C STIME TTY TIME CMD root 12128 12109 0 22:56 pts/0 00:00:00 /bin/bash 查看镜像元数据 [root@ansible /]# docker inspect 容器id
进入当前正在进行的容器 ##通常容器都是通过后台方式运行 同时进入容器 修改一些配置 ##命令 方式一 docker exec [root@ansible /]# docker exec -it 容器id /bin/bash [root@6dd9e67edc11 /]# hostname -i 172.17.0.2 方式二 docker attach 容器id 方式一 进入容器后开启一个新的终端 方式二 inrush容器正在执行的终端 不会启动新的进程
从容器拷贝文件主机上 ###docker cp 容器id [root@6dd9e67edc11 home]# touch ls.java [root@6dd9e67edc11 home]# exit [root@ansible /]# docker cp 6dd9e67edc11:/home/ls.java /root [root@ansible /]# cd ~ [root@ansible ~]# ls 2.sh ceshi.yml ls.java sudoers ##拷贝是一个手动过程,未来的我们使用 -v 卷的技术 可以实现自动同步
四 docker实例
安装nginx
[root@master ~]# ansible master -m shell -a"docker search nginx" [root@master ~]# ansible master -m shell -a"docker pull nginx" [root@master ~]# ansible master -m shell -a"docker run -d --name nginx01 -p 3344:80 nginx" 192.168.1.105 | CHANGED | rc=0 >> c248dff1b4b68fa8689be1d0c2aac4b69984de85d79e93b7ab64f034b76130b6 ##启动nginx 名为nginx01 80端口映射到主机的3344端口 -d 后台运行 --name 起名字 -p 主机和容器内部端口 [root@master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c248dff1b4b6 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01 [root@master ~]# docker exec -it nginx01 /bin/bash root@c248dff1b4b6:/# whereis nginx nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
部署 es+ kibana
# es暴露的端口非常多 十分耗内存 es数据需要放置到安全目录 挂载 docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag 对他进行调优 #修改配置文件 -e ## -- ner somenetwork 网络配置 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.4.2 即软件运行最大内存512m 最少64m 节省资源
可视化
- protainer
- Rancher
什么是portainer ?
docker的图形揭秘那改哪里工具 提供一个后台面板供我们操作
地址:牧场主/牧场主 - 泊坞窗图像|泊坞轮毂 (docker.com)
commit镜像
进入容器tomcat ##修改配置文件 默认官方的配置文件主页不显示 需要将其移动 root@0c4518e64010:/usr/local/tomcat# cp -r webapps.dist/* webapps ## 1.将此容器上传到本地镜像 ## docker commit -a="描述" -m"作者" 容器id 镜像名称:tag [root@master ~]# docker commit -a="new tomcat" -m="huawei" 0c4518e64010 tomcat:1.0 [root@master ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat01 1.0 2edf7393e8d1 3 seconds ago 480MB elasticsearch 8.4.2 2f8a9577a31d 11 days ago 1.26GB tomcat latest 7a91e6f458bb 3 weeks ago 475MB hello-world latest feb5d9fea6a5 12 months ago 13.3kB centos latest 5d0da3dc9764 12 months ago 231MB