docker基础

 

docker官网:https://docs.docker.com/engine/install/centos/

 

1.安装docker

官网内有详细安装步骤,以下安装环境为centos7

1.卸载旧版本

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

2.安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的存储库。

$ sudo yum install -y yum-utils

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

3.安装DOCKER引擎

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

4.启动Docker

$ sudo systemctl start docker

5.验证docker,如果下载hello world镜像失败,可参考:https://www.cnblogs.com/nthforsth/p/12257755.html

$ sudo docker run hello-world

2.使用Dockerfile构建镜像

2.1 Dockerfile语法

可参考网址:https://github.com/docker-library

FROM

引用一个基础镜像,安全起见,尽量使用官方的image作为基础镜像

FROM centos

LABEL

定义image的基础信息,有点类似代码中的注释

RUN

运行命令的关键字,每一个RUN一句就是一层,建议使用 \ 连接语句,避免无用分层。

执行命令并创建新的 Images Layer

RUN yum update && yum install -y vim \
    python-dev

WORKDIR 

WORKDIR /root

设定当前目录为工作目录,如果该目录会自动创建

ADD and COPY

添加本地文件到image,COPY优于ADD,ADD除了COPY之外还有解压的功能

ADD hello /   #把hello添加到image下

ENV

设置常量,可以增加Dockerfile的可维护性

ENV mysql 5.6

CMD

1.设置容器启动后默认执行的命令和参数

2.如果docker run指定了其他命令,CMD命令会被忽略

3.如果定义了多个CMD,最后一个会被执行

ENTRYPOINT

1.设置容器启动后默认执行的命令

2.让容器以应用程序或者服务的形式运行

3.一定会被执行,不会被忽略

 

2.2 容器的常用命令

docker --help 查看所有的命令

以下为常用命令:

docker run 镜像ID                    生成一个容器

docker exec -it 容器ID bash     进入一个容器

docker stop 容器ID                  停止容器

docker restart 容器ID               重启容器

docker logs 容器ID                   查看容器日志

docker stats 容器ID                  查看容器的cpu以及其他状态

docker inspect 容器ID              查看容器详细信息

 

2.3 容器的资源限制

docker run --help   查看所有的限制

 

3. docker的网络

3.1 查看docker的网络

[root@promote ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
d3ceaeeae4f2        bridge              bridge              local
093d57f23353        host                host                local
4c8ebd61dd4a        none                null                local

详细信息参见:https://blog.csdn.net/HCY_2315/article/details/103927400

 

docker容器之间的通信:

docker基础_第1张图片

 

使用命令即可查看:

[root@promote ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
docker0		8000.02429601b796	no		veth1498116
							veth41f2d5e

 brctl安装:

[root@promote ~]# yum install bridge-utils

 

3.2 容器之间link

启动容器时,使用 --link ,可以在容器的 /etc/hosts 下面自动增加配置

如,执行命令:

docker run -d --name test3 --link test1 centos /bin/sh -c "while true; do sleep 3600; done"

进入test3容器,可以直接 ping test1

sh-4.4# ping test1
PING test1 (172.17.0.2) 56(84) bytes of data.
64 bytes from test1 (172.17.0.2): icmp_seq=1 ttl=64 time=0.457 ms
64 bytes from test1 (172.17.0.2): icmp_seq=2 ttl=64 time=0.075 ms
^C
--- test1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 0.075/0.266/0.457/0.191 ms

查看  /etc/hosts 文件

docker基础_第2张图片

不过在test1则不能直接  ping test3

 

3.3 容器的端口映射

把docke人的端口映射到外面以供访问 

-p [容器端口] : [宿主机端口]

例子:docker run --name web -d -p 5000:5000 imagesID

 

你可能感兴趣的:(docker)