头图

介绍
image.png

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker组成部分
image.png

目标

  • 在CentOS7中配置docker;
  • 熟悉docker的基础使用;

安装依赖包;

# yum 包更新到最新
sudo yum update
#软件包yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

删除旧版

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装Docker
1. 设置yum源

# 1.1、方案一:使用ustc的(推荐)
sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-
ce/linux/centos/docker-ce.repo

# 1.2、方案二:使用阿里云(可能失败)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-
ce/linux/centos/docker-ce.repo

2. 安装Docker

yum install docker-ce docker-ce-cli containerd.io

3. 启动命令操作

systemctl status docker (查看服务当前状态)
systemctl start docker  (启动docker服务)
systemctl stop docker   (定制docker服务)
systemctl restart docker(重启docker服务)

systemctl enable docker (开机自启动)
docker update --restart=always <CONTAINER ID> (容器设置开机启动)

4. 查看启动状态
systemctl status docker
image.png

5. 查看版本信息
docker version
image.png

6、查看docker版本
docker -v

Docker启动错误处理
1. 错误1
[root@localhost docker]# sudo systemctl start docker

Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details.
To force a start use "systemctl reset-failed docker.service" followed by "systemctl start docker.service" again.
错误1解决:
# daemon.json 改为 daemon.conf 
mv /etc/docker/daemon.json /etc/docker/daemon.conf

重新执行命令
systemctl status docker (查看服务当前状态)
systemctl start docker  (启动docker服务)
systemctl stop docker   (定制docker服务)
systemctl restart docker(重启docker服务)

2. 错误2

docker容器启动成功,端口已映射,外部网站依旧无法访问
错误1解决:原因-内部外部网络不通,网络模式不同
2.1方案一:
#编辑 sysctl.conf
vi /etc/sysctl.conf
#在上述打开的文件中后面添加
net.ipv4.ip_forward=1
#重启network
systemctl restart network
#打印查看
sysctl net.ipv4.ip_forward
#是否相应
net.ipv4.ip_forward = 1

2.2方案一:
docker启动时,因net模式没指定,导致容器和镜像即使启动成功依然无法访问。

#科普:使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式
#Docker有以下4种网络模式:
· host模式,使用--net=host指定。
· container模式,使用--net=container:NAME_or_ID指定。
· none模式,使用--net=none指定。
· bridge模式,使用--net=bridge指定,默认设置。

#解决方案 指定 --net="host"
docker run -di --net="host"  --name=tomcat -p 8080:8080 tomcat 

访问测试

http://192.168.157.110:8080/
http://172.17.0.1:8080/

image.png
image.png


Jack
1 声望0 粉丝