一 安装docker(CeneOS 7 )
1.卸载
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
2.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
3. 增加repo(阿里云的repo 国内推荐 )
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
4. 安装docker-CE (还有个docker-EE自己用不到)
yum -y install docker-ce
#这一步如果实在Centos6 会报错 因为repo中的包都是7的
5.启动docker
systemctl start docker
二 docker 实验()
2.1 helloworld (本地镜像中没有 会自动区镜像资源池中下载)
docker run hello-world
docker run -d --name=web -p 80:80 nginx:latest
2.2 查看本地镜像
docker images
docker image ls

2.3 查找公共镜像
docker search mongo
2.4 拉取镜像
docker pull mongo:3.6
2.5 启动容器
docker run --name mongo3_6 -p 27401:27017 -v /website/mongo181215/db:/data/db -v /website/mongo181215/configdb:/data/configdb -e MONGO_INITDB_ROOT_USERNAME=abcusename -e MONGO_INITDB_ROOT_PASSWORD=abcpasswd -d mongo:3.6
--name 这个Container的名字随意定义 ,如果有重复会提醒
-p 1:2 宿主机端口1,Cotainer内部的端口为2
-v /website/mongo181205/configdb:/data/configdb 映射属组机文目录 /website/mongo181205/configdb到 容器的/data/configdb
-e MONGO_INITDB_ROOT_USERNAME=abcusename 设置环境变量
-d 在后台运行容器并打印 容器ID
-i 只显示信息不打开伪终端
-t 打开伪终端 类似putty(一般it一起用)
docker cp /website/ 749056ea1637:/opt 宿主机到镜像的cp
删除所有的镜像和容器
Delete all containers
docker rm $(docker ps -a -q)
Delete all images
docker rmi $(docker images -q)
进入 container
docker exec -it centos7 /bin/bash
三 用自己的镜像库启动服务
docker login --username=abc@163.com registry.cn-beijing.aliyuncs.com
docker logout
缺一个查看镜像库中镜像列表的命令
docker pull registry.cn-beijing.aliyuncs.com/abc/qhsupply:latest
docker run -p 8001:8001 --name qhsupply -t registry.cn-beijing.aliyuncs.com/abc/qhsupply:latest
启动的时候有可能报错各种占用 端口 名字等等
使用 docker ps -a 可以现在的所有容器情况 启动与未启动的都能看到

然后根据自己需要删除容器docker -rm ID/NAME
也可以 docker start ID/NAME、 docker stop ID/NAME 启停在容器列表中的容器
启动之后发现有问题没有真正启动起来使用-t 查看发现试没有连上mongo(同一台宿主机的另一个容器),连接信息在镜像的application.yml中
不在同一宿主机可以直接通过宿主机IP访问
docker inspec IMAGEID 或docker inspec IMAGEREPOSITORY:TAG 可以查看 镜像的信息
发现了"UpperDir": "/var/lib/docker/overlay2/abcd00xxx/diff" 下的app下是程序代码
找到yml 直接更改 端口及IP (宿主机 ifconfig的docker网卡ip或者宿主机自己的内网IP)
创建并push镜像:参见 https://docker_practice.gitee.io/image/build.html
通过docker file bulid
1.找一个空目录
mkdir ~/test
cd ~/test
2.创建entry.sh
#!/bin/bash
nohup /usr/bin/Xvfb :99 -screen 0 $RESOLUTION -ac +extension GLX +render -noreset > /dev/null 2>&1 &
nohup startxfce4 > /dev/null 2>&1 &
nohup x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :99 -forever -bg -rfbauth /home/alpine/.vnc/passwd -users alpine -rfbport 5900 > /dev/null 2>&1 &
nohup /home/alpine/noVNC/utils/launch.sh --vnc localhost:5900 > /dev/null 2>&1 &
/bin/bash
3.创建dockerfile文件 方法参见上链接
FROM alpine:edge
LABEL maintainer="Jan Kuri <jan@bleenco.com>"
ENV DISPLAY :99
ENV RESOLUTION 1920x1080x24
RUN echo -e "http://mirrors.aliyun.com/alpine/edge/main\nhttp://mirrors.aliyun.com/alpine/edge/community\nhttp://mirrors.aliyun.com/alpine/edge/testing" > /etc/apk/repositories \
&& apk add --no-cache ca-certificates python curl openssl sudo xvfb x11vnc xfce4 faenza-icon-theme bash \
&& adduser -h /home/alpine -s /bin/bash -S -D alpine && echo -e "alpine\nalpine" | passwd alpine \
&& echo 'alpine ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER alpine
WORKDIR /home/alpine
COPY entry.sh /entry.sh
COPY noVNC.tar /home/alpine/
RUN mkdir -p /home/alpine/.vnc && x11vnc -storepasswd alpine /home/alpine/.vnc/passwd \
&& tar xf /home/alpine/noVNC.tar -C /home/alpine/ \
&& rm -rf /home/alpine/noVNC.tar
CMD [ "/bin/bash", "/entry.sh" ]
4.执行构建命令
#构建的时候可以从现在运行的容器中创建
docker commit -m="A new custom image" --author="qtong" b437ffe4d630 test/apache2:webserve
docker build -t alpine-xfce4:v1 .
#docker build -t registry-vpc.cn-beijing.aliyuncs.com/abcd/alpine-xfce4:v1 .
5.push到镜像库
docker push alpine-xfce4:v1
#docker push registry-vpc.cn-beijing.aliyuncs.com/abcd/alpine-xfce4:v1
配置远程连接 远程安全控制
https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=QT:2376 version
curl https://QT:2376/images/json --cert ./cert.pem --key ./key.pem --cacert ./ca.pem
详细docker命令见下链接
https://docs.docker.com/edge/engine/reference/commandline/docker/
网友评论