Docker容器简单操作及配置

1、前言

Docker 是一个开源的应用容器引擎,可将打包应用程序到轻量的容器中。

2、Docker安装及启动

1、安装以下内容

containerd.io-1.2.5-3.1.el7.x86_64.rpm
container-selinux-2.21-1.el7.noarch.rpm
docker-ce-cli-18.09.7-3.el7.x86_64.rpm
libsemanage-2.5-8.el7.x86_64.rpm
libsemanage-python-2.5-8.el7.x86_64.rpm
pigz-2.3.4-1.el7.x86_64.rpm
policycoreutils-2.5-17.1.el7.x86_64.rpm
policycoreutils-python-2.5-17.1.el7.x86_64.rpm

2、启动docker并查看信息

命令:systemctl start docker

             docker info

3、导入镜像查看安装是否成功

导入2048游戏

命令:docker load -i game2048.tar

启动游戏

命令:docker run -d --name game1 -p 80:80 game2048

3、根据原有容器进行修改制作新的容器

(1)导入镜像

命令:docker load -i ubuntu.tar

(2)运行镜像

命令:docker run -it --name ubun1 ubuntu

(3)修改内容

(4)提交修改制作容器

命令:docker commit ubun1 ubuntu:ubun2

(5)修改标签

命令:docker tag ubuntu:ubun2 ubuntu:latest

4、通过dockerfile建立容器

(1)Dockerfile文件内容并读取文件

建立名为Dockerfile的文件

FROM ubuntu
RUN touch kk

命令:docker build -t ubuntu:latest .

在当前路径下读取Dockfile文件

(2)封装能够执行安装使用nginx的容器

Dockfile文件

Dockerfile
FROM rhel7
COPY dvd.repo /etc/yum.repos.d/
RUN rpmdb --rebuilddb && yum install -y gcc pcre-devel zlib-devel make
ADD nginx-1.17.0.tar.gz /mnt
EXPOSE 80
WORKDIR /mnt/nginx-1.17.0
RUN ./configure --prefix=/usr/local/nginx
RUN make && make install

VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

docker build -t rhel7:rh1 .
docker run -d --name nginx3 -p 80:80 rhel7:rh1

 当前目录下的内容

导入镜像

docker load -i rhel7.tar

读取Dockerfile文件

运行容器

命令:docker run -d --name nginx3 -p 80:80 rhel7:rh1

(3)使用gcr.io/distroless/base进行优化

导入镜像

Dokerfile

FROM rhel7 as build
COPY dvd.repo /etc/yum.repos.d/
ADD nginx-1.17.0.tar.gz /mnt
WORKDIR /mnt/nginx-1.17.0
RUN rpmdb --rebuilddb && yum install -y gcc pcre-devel zlib-devel make && rm -fr /var/cache/yum &&sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx && make && make install && rm -fr /mnt/nginx-*


FROM gcr.io/distroless/base
COPY --from=build /usr/local/nginx /usr/local/nginx
EXPOSE 80

VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

 

(4)读取函数库进行优化

Dokerfile

FROM nginx:1.16.0 as base

# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
ARG TIME_ZONE

RUN mkdir -p /opt/var/cache/nginx && \
    cp -a --parents /usr/lib/nginx /opt && \
    cp -a --parents /usr/share/nginx /opt && \
    cp -a --parents /var/log/nginx /opt && \
    cp -aL --parents /var/run /opt && \
    cp -a --parents /etc/nginx /opt && \
    cp -a --parents /etc/passwd /opt && \
    cp -a --parents /etc/group /opt && \
    cp -a --parents /usr/sbin/nginx /opt && \
    cp -a --parents /usr/sbin/nginx-debug /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libpcre.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libz.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libc.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libdl.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libpthread.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libcrypt.so.* /opt && \
    cp -a --parents /usr/lib/x86_64-linux-gnu/libssl.so.* /opt && \
    cp -a --parents /usr/lib/x86_64-linux-gnu/libcrypto.so.* /opt && \
    cp /usr/share/zoneinfo/${TIME_ZONE:-ROC} /opt/etc/localtime

FROM gcr.io/distroless/base

COPY --from=base /opt /

EXPOSE 80 443

ENTRYPOINT ["nginx", "-g", "daemon off;"]

5、使用阿里云镜像加速器

(1)编辑文件

路径:/etc/docker/daemon.json

添加以下内容

{

"registry-mirrors": ["https://vo5twm71.mirror.aliyuncs.com"]

}

(2)重启服务

命令:

systemctl daemon-reload

systemctl restart docker.service

(3)测试

命令:docker pull nginx

6、搭建本地私有仓库

(1)建立目录

命令:mkdir certs

(2)生成密钥和证书

命令:openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/admin.com.key -x509 -days 365 -out certs/admin.com.crt

(3)导入镜像

该镜像从docker官网下载,也可使用阿里云镜像加速器

(4)启动容器

命令:docker run -d --restart=always --name registry -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/admin.com.crt -e REGISTRY_HTTP_TLS_KEY=/certs/admin.com.key -p 443:443 registry:2

将证书拷贝至指定文件

路径:/etc/docker/certs.d/

(5)设置使用用户登陆

建立用户

查看仓库号

启用仓库使用帐号密码登陆

修改容器名称用于上传至仓库

域名/名称

上传

7、使用harbor搭建仓库

(1)安装并启动docker-compose

(2)安装harbor

解压离线安装包修改配置文件,harbor.yml

执行安装脚本

(3)进入网页,设置仓库

(4)测试上传

修改名称

域名/仓库/容器

登陆并上传

8、网络管理

在运行容器时可以指定运行时的网络状态,以下分别介绍建立自定义网络,端口映射,容器之间相互通信

(1)自定义网络

网络类型有bridge,host,null

命令:docker network create --subnet 172.0.0.0/24 --gateway 172.0.0.100 my_net1

运行容器查看网络配置

运行使用none类型网络,将仅有回环网卡

(2)端口映射

容器映射主机80端口

(3)容器之间相互通信

方法一:容器连接通信目标的网络

开启两个镜像ub1和ub2分别处在不同网络

网络分别为172.0.0.0/24网段和172.1.0.0/24网段

ub1连接my_net2实现通信

方法二:运行镜像时使用link选项

起初先运行ub2,之后在运行ub1时加上--link ub2:test选项,ub2为通信目标,test为别名,可以看作为域名,通信时通过别名进行通信

方法三:使用相同ip

在运行加上--network container:ub1,将共享ub1的网络

(跨主机容器通信)方法三:设置macvlan使用本地主机的网卡,本地主机需设置混杂模式开启

主机1:

设定网卡

建立macvlan类型

主机2:

分别启动容器

主机2容器通信主机1容器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值