Docker安装及基本命令

一、Docker的安装

参考链接:

https://www.jianshu.com/p/9c96ea8e6f41

docker安装-----社区版ce(免费的,另一版本收钱的)

系统:centos 7.4

  1. 前提:内核版本需要不小于3.10,不然docker起不来
uname  -r   ###查看当前内核版本
  1. 安装docker的依赖包
yum install -y yum-utils  lvm2  device-mapper-persistent-data
  1. 配置docker源

    yum-config-manager   --add-repo https://download.docker.com/linux/centos/docker-ce.repo

可以配置国内阿里云或者使用中国科学技术大学镜像地址

使用中科大镜像地址:

yum-config-manager   --add-repohttps://docker.mirrors.ustc.edu.cn

  1. 可以查看所有仓库中所有docker版本,并选择特定版本安装

yum   list   docker-ce --showduplicates   |   sort   -r

或者:

yum  -y install  docker-ce (默认版本是ce的稳定版本)

时间比较长(网速快,就越快)

报错:

图片

原因:和Podman冲突

解决方法:

(1)查看是否安装Podman

rpm -q podman
podman-1.4.2-5.module_el8.1.0+237+63e26edc.x86_64

(2)删除Podman

dnf remove podman
  1. 重启docker
chkconfig docker on   ### 开机启动
service docker start     ###启动docker
  1. 查看docker是否安装成功
 docker version

图片

  1. 运行 hello-world
docker run hello-world

图片

二、Docker的基本命令

  1. 查看一下下载的这个 hello-world镜像
docker images

图片

  1. 配置阿里云镜像加速

图片

ps:因为这边命令是私网可用,所以要选择自己的

图片

  1. 镜像的基本命令
cat /etc/os-release       #查看服务器版本等
 
docker version            #显示docker的版本信息
docker info               #显示docker的系统信息,包括镜像跟容器的数量
docker --help             #显示docker相关的帮助命令
docker search 镜像        #搜索镜像
例如:
docker search mysql
docker search tocmat
......
##也可以通过docker search --help查看可选项
例如:
docker search mysql --filter=STARS=5000   #显示星数stars大于5000的             
docker pull 镜像          #下载镜像
例:
[root@iZuf62lho701dw47yyk2n7Z /]# docker pull mysql
Using default tag: latest              # 如果不写tag,就默认是latest
latest: Pulling from library/mysql     
a076a628af6f: Pull complete        #分层下载,docker image的核心,联合文件系统
f6c208f3f991: Pull complete 
88a9455a9165: Pull complete 
406c9b8427c6: Pull complete 
7c88599c0b25: Pull complete 
25b5c6debdaf: Pull complete 
43a5816f1617: Pull complete 
1a8c919e89bf: Pull complete 
9f3cf4bd1a07: Pull complete 
80539cea118d: Pull complete 
201b3cad54ce: Pull complete 
944ba37e1c06: Pull complete 
Digest:                      sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c 
#签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest    #真实地址
#等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest
#指定版本下载,指定的版本要在mysql镜像中
docker pull mysql:5.7
docker images -aq                         #查看所有存在镜像的id
docker rmi -f 镜像id                      #删除镜像
docker rmi -f 镜像id 容器id 镜像id         #删除多个镜像
docker rmi -f $(docker images -aq)       #删除全部的镜像
docker 
  1. 容器的基本命令

ps:有了镜像才可以创建容器!可以下载一个centos镜像来测试!

docker pull centos
#启动并进入容器
docker run -it centos /bin/bash
#退出容器
exit                           #直接容器停止并退出
Ctrl + P + Q                   #容器不停止并退出
#docker ps 命令
 无参数                        #列出当前正在运行的容器
 -a                           #列出当前正在运行的容器+历史运行过的容器
 -n                           #显示最近创建的容器
 例:docker ps -a -n=1        #显示1个容器
 
 -q                           #显示所有容器的编号
 例:docker ps -aq            
#删除容器
docker rm 容器id            #删除指定的容器,不能删除正在运行的容器,或rm -f删除
docker rm -f $(docker ps -aq)  #删除所有的容器
#启动和停止容器
docker start 容器id              #启动容器
docker restart 容器id            #重启容器
docker stop 容器id               #停止当前正在运行的容器
docker kill 容器id               #强制停止当前容器
  1. 查看日志
#运行容器
docker run -it centos /bin/bash         #交互式启动容器
docker run -d centos /bin/bash          #后台方式启动容器
#查看容器日志,aa4feaece5e1为容器id,无日志可以Ctrl+C退出
docker logs -f -t --tail 10 aa4feaece5e1
#写个脚本输入日志
docker run -d centos /bin/bash -c "while true;do echo fly666;sleep 1;done"
#docker ps 查看刚才启动的容器id

图片

#查看日志
docker logs -f -t --tail 10 5295fa02e879

图片

  1. 查看容器的进程信息
#查看容器的进程信息
docker top 5295fa02e879          
  1. 查看容器元数据信息
docker inspect  5295fa02e879
  1. 进入当前正在运行的容器
#进入当前容器
docker exec -it 5295fa02e879 /bin/bash
#进入当前容器
docker attach 5295fa02e879        #正在执行当前代码
#区别
docker exec                       #进入容器后开启一个新的终端,可以在里面操作
docker attach                     #进入容器正在执行的终端,不会启动新的进程
  1. 从容器内拷贝文件到主机上
docker cp 容器id:容器内路径  服务器路径
docker cp 服务器路径  容器id:容器内路径
1):启动一个容器centos
      docker run -it centos /bin/bash
2):Ctrl + P + Q 不停止退出容器
3):查看容器的id
      docker ps
4):在/home目录下,创建一个java文件,kuangshen.java

图片

5):进入容器内
     docker attach 9443b329a99a
6):在容器内/home目录下创建个java文件,test.java

图片

7):exit退出当前容器
8):将容器内的test.java复制到服务器/home目录下
docker cp 9443b329a99a:/home/test.java /home
9):将服务器上/home目录下的kuangshen.java复制到容器内的/home目录下
docker cp /home/kuangshen.java 9443b329a99a:/home

三、部署nginx,tomcat

  1. 部署nginx
1):DockerHub上搜索nginx镜像
docker search nginx
2):拉取nginx镜像
docker pull nginx

图片

3):创建nginx容器并启动
#取名为nginx01
docker run -d --name nginx01 -p 3344:80 nginx    
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器nginx内部端口
4):本机测试
#显示html代码,出现Welcome to nginx!
curl localhost:3344
5):端口暴露的概念
#访问外网也就是公网ip的某个端口号时,需要先在阿里云将端口号加入安全组,然后在服务器上开放端口号并保证可用。

图片

6):外网访问nginx01

图片

7):进入nginx内
docker exec -it nginx01 /bin/bash
#可以查看nginx的相关信息

图片

8):再启动一个nginx服务nginx02
docker run -d --name nginx02 -p 3345:80 nginx
#需要开放3345端口
#查看开启的端口号是否有3345
firewall-cmd --zone=public --list-ports
#添加3345端口号
firewall-cmd --zone=public --add-port=3345/tcp --permanent
#重启防火墙
firewall-cmd --reload
#查看3345端口号是否可用,出现yes即可
firewall-cmd --zone=public --query-port=3345/tcp 
#查看防火墙状态,如果是dead状态,即防火墙未开启
systemctl status firewalld.service
9):测试nginx02能否访问

图片

思考:每次改动nginx配置文件,都需要进入容器?十分的麻烦,要是在容器外部提供一个映射路径,达到在容器内部修改文件名,容器内部就可以自动修改了。-v 容器卷

  1. 部署tomcat
1):DockerHub上搜索tomcat镜像,只是为了查看有多少tomcat镜像
docker search tomcat
2):拉取tomcat镜像
docker pull tomcat
3):以后台方式启动tomcat
docker run -d --name tomcat01 -p 3350:8080 tomcat
#官方启动方式,用完即删。
docker run -it  --rm tomcat:9.0
4):外网测试tomcat01
#可以访问,但是显示的404

图片

5):404问题
#linux命令少了
#没有webapps文件
原因:阿里云镜像的原因。默认是最小的镜像,所有不必要的都剔除了。保证最小可运行环境。
解决:将webapps.dist内文件拷贝到webapps内。

图片

6):将webapps.dist内的文件拷贝到webapps内
cp -r webapps.dist/* webapps

图片

7):重新访问

图片

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薄衫啊

三克油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值