docker入门

目录

一.docker简介

二,安装docker (阿里云)

      阿里云镜像加速

       回顾hello world流程

       底层原理

三, docker常用命令

镜像命令

容器命令

常用的其他命令

四  docker实例

安装nginx

部署 es+ kibana

可视化

commit镜像



一.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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值