一、Docker 容器的安装

1.安装docker,docker 容器软件包具有依赖性

docker swarm为啥没什么用 docker swarm使用_docker


注意:此处采用yum仓库解决,安装18.06版本

docker swarm为啥没什么用 docker swarm使用_html_02

[root@server1 yum.repos.d]# yum install -y docker-ce-18.06.1.ce-3.el7.x86_64
[root@server1 ~]# systemctl start docker
[root@server1 ~]# docker --version			#查看版本号
Docker version 18.06.1-ce, build e68fc7a

docker开启后,linux 系统会为 docker 分配 ip

docker swarm为啥没什么用 docker swarm使用_docker_03

二、docker 常用的指令

# docker load -i ubuntu.tar  导入镜像
# docker run -it --name vm1 ubuntu    创建容器(以ubuntu镜像为模板)
# docker ps  查看容器状态
# docker ps -a   查看容器状态(包括不活跃的容器)
# docker attach vm1   连接容器
# docker top vm1   查看容器进程
# docker logs vm1 查看容器指令输出 -f 参数可以实时查看
# docker inspect vm1 查看容器详情
# docker stats vm1 查看容器资源使用率
# docker diff vm1 查看容器修改
# docker stop vm1 停止容器
# docker start vm1 启动容器
# docker kill vm1 强制干掉容器
# docker restart vm1 重启容器
# docker pause/unpause vm1  暂停/恢复容器
# docker rm vm1  删除容器

docker 命令的用法:

如果没有命令补齐功能:(装了之后需要先退出终端,再连上)

[root@server1 ~]# yum install -y bash-*

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_04

三、镜像的导入和容器的使用

1.获取一些镜像的资源

docker swarm为啥没什么用 docker swarm使用_docker_05


2.搭建小游戏服务器

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_06

[root@server1 images]# docker load -i game2048.tar

查看导入的镜像

[root@server1 ~]# docker images game2048

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_07

运行镜像(-d 打入后台;–name 自定义名字;-p 映射端口)

[root@server1 ~]# docker run -d --name 2048gameweb -p 80:80 game2048
b03d32ffb6c050b72f9261e3fc19c09e7a88c5d2258f6394cd70cfa278053d78

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_08


测试:浏览器访问172.25.254.1

docker swarm为啥没什么用 docker swarm使用_bash_09

3.nginx 服务器的搭建

docker swarm为啥没什么用 docker swarm使用_bash_10


此时80端口是被占用的

导入nginx的镜像,并运行

[root@server1 images]# docker load -i nginx.tar
[root@server1 ~]# docker run -d --name web1 nginx
273fc066982f6fd3f72c0c60744b35a7469af0dfafcb38f2b4cd252f45808e37
#此时没有影射端口,所以走默认,此时因为再虚拟机,会冲突(和真机)

[root@server1 ~]# docker inspect web1 查看信息

docker swarm为啥没什么用 docker swarm使用_docker_11

注意:此时不能通过浏览器访问,因为本实验docker在虚拟设备上部署,所以直接浏览器访问172.17.0.3会发生冲突

测试:curl命令会看到nginx的默认发布页面

docker swarm为啥没什么用 docker swarm使用_html_12

  • 方法1:修改默认发布页面
    -it 交互式
    Ctrl + pq #不关闭退出
    Ctrl + d 退出(会关闭)
    Cmd表示再执行时,默认执行的指令
[root@server1 ~]# docker container exec -it web1 bash		#进入到容器里,有些应用没bash
root@273fc066982f:/# cd /usr/share/nginx/html/
root@273fc066982f:/usr/share/nginx/html# ls
50x.html  index.html
root@273fc066982f:/usr/share/nginx/html# echo www.westos.org > index.html 
root@273fc066982f:/usr/share/nginx/html# exit

docker swarm为啥没什么用 docker swarm使用_docker_13

  • 方法2:cp方式修改默认发布页
[root@server1 ~]# cd /tmp/
[root@server1 tmp]# ls
[root@server1 tmp]# mkdir docker
[root@server1 tmp]# cd docker/
[root@server1 docker]# vim index.html
[root@server1 docker]# cat index.html 
www.2.org
[root@server1 docker]# docker container cp --help

Usage:	docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
	docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

Options:
  -a, --archive       Archive mode (copy all uid/gid information)
  -L, --follow-link   Always follow symbol link in SRC_PATH
[root@server1 docker]# docker container cp index.html web1:/usr/share/nginx/html

docker swarm为啥没什么用 docker swarm使用_docker_14

基础的 docker 指令
  • attach
[root@server1 ~]# docker run -it --name vm1 ubuntu
root@d6a7705a118a:/# exit		#ctrl d 退出会关闭

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_15


[root@server1 ~]# docker start vm1 开启vm1

vm1

docker swarm为啥没什么用 docker swarm使用_html_16

[root@server1 ~]# docker container attach vm1		#连接容器(会卡顿,敲回车就正常)
root@d6a7705a118a:/# 
root@d6a7705a118a:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@d6a7705a118a:/# read escape sequence		#ctrl pq 退出不关闭

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_17


##有些镜像是没有bash的:

[root@server1 images]# docker load -i rhel7.tar

[root@server1 ~]# docker run -it --name vm2 rhel7 bash		#需要自己加指令
bash-4.2# exit

ubuntu和rhel7可以看见CMD的不同

docker swarm为啥没什么用 docker swarm使用_docker_18

  • commit 提交;针对容器

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_19

[root@server1 ~]# docker commit vm1 ubuntu:v1			#将vm1镜像提交为ubuntu:v1
sha256:41494af254baa651c137315d8a52f308e02d67d21b6f946fd012a0d6f4c4726f

docker swarm为啥没什么用 docker swarm使用_html_20

  • diff
  • docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_21

  • export:导出—import:导入
  • docker swarm为啥没什么用 docker swarm使用_html_22

  • logs 详细显示操作,包括空格指令

docker swarm为啥没什么用 docker swarm使用_html_23

  • ls
  • port
  • stop

[root@server1 ~]# docker ps -qa 取id

docker swarm为啥没什么用 docker swarm使用_html_24


[root@server1 docker]# docker rm -f docker ps -qa #删除容器

  • Prune: #删除停止的容器

[root@server1 ~]# docker container prune

docker swarm为啥没什么用 docker swarm使用_html_25

  • stats #相当于top命令,查看cpu情况

[root@server1 ~]# docker container stats

docker swarm为啥没什么用 docker swarm使用_docker_26

  • Top: 进程查看

[root@server1 ~]# docker container top 2048gameweb

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_27

  • images 镜像
  • network 网络

docker swarm为啥没什么用 docker swarm使用_docker_28

  • Volume:逻辑卷

docker swarm为啥没什么用 docker swarm使用_docker_29

镜像的分层结构和共享资源

容器是共享内核的

docker swarm为啥没什么用 docker swarm使用_html_30


注意:此时的ubuntu和rhel7都是相同的内核分层结构:v1是在laster的基础上建的

docker swarm为啥没什么用 docker swarm使用_docker_31

注意:底层采用相同的188M

实验测试效果:
[root@server1 ~]# docker run -it --name vm1 rhel7 bash
bash-4.2# touch file{1..10}
bash-4.2# exit
d[root@server1 ~]# docker commit vm1 rhel7:v1
sha256:8776a62870aea062d5d382dba1af614b6bdf9e91606cec87fcc2c8380b04c363
[root@server1 ~]# docker rm -f vm1
vm1
[root@server1 ~]# docker run -it --name vm1 rhel7:v1 bash
bash-4.2# ls
bin   dev  file1   file2  file4  file6	file8  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  file10  file3  file5  file7	file9  lib   media  opt  root  sbin  sys  usr
bash-4.2# touch file{20..30}
bash-4.2# exit
[root@server1 ~]# docker commit vm1 rhel7:v2
sha256:a9b7438c8f8d89ed9814d3d219a5829dac15035ca2d36bf80f614c316105c628
[root@server1 ~]# docker rm vm1
vm1
[root@server1 ~]# docker images rhel7
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
rhel7               v2                  a9b7438c8f8d        21 seconds ago       140MB
rhel7               v1                  8776a62870ae        About a minute ago   140MB
rhel7               latest              0a3eb3fde7fd        4 years ago          140MB

docker swarm为啥没什么用 docker swarm使用_docker_32

docker swarm为啥没什么用 docker swarm使用_docker swarm为啥没什么用_33