前言
因为每个人的前置知识不一样,所以本文不适合其他人作为学习参考。就是自己做个记录,以防忘记。自己电脑一直用的docker环境,但平时也没怎么折腾,今天整理一下。
如何编译一个镜像?简单的写个hello.c文件,编译成可执行的二进制文件
#include <stdio.h>
int main()
{
printf("hello docker\n");
}
编译可执行文件
gcc -static hello.c -o hello
Dockrefile里的内容
FROM scratch
ADD hello /
CMD ["/hello"]
编译镜像(注意后面有一个 .)
docker build -t euan/ubuntu-hello .
把容器提交成一个镜像:docker commit 当前运行的容器名 新镜像名:版本号
docker container ls -a
docker commit b65e103367bf ubuntu-vim
push 镜像到自己的docker hub上执行
docker push test/ubuntu-hello:latest
发现没有权限
The push refers to repository [docker.io/test/ubuntu-hello]0a5c675bd2fb: Preparing denied: requested access to the resource is denied
查了下原因发现镜像名字要和自己的docker hub帐号名一样
执行命令改名字
docker tag 7a07b8c2aa07 euan/ubuntu-hello:latest
再次push
docker push euan/ubuntu-hello
The push refers to repository [docker.io/euan/ubuntu-hello]
0a5c675bd2fb: Pushed
latest: digest: sha256:b65468652d4d858aa984ac523e35e3b4a8b0eca0e6b5b956b080f5c500b206b1 size: 527
ubuntu@VM-140-90-ubuntu:~/hello-docker$
二、搭建自己的docker hub
docker run -d -p 5000:5000 --restart always --name registry registry:2
推送镜像到自己的私有仓
docker push 自己服务器ip地址:5000/php-fpm-7.2
The push refers to repository [自己服务器ip地址/php-fpm-7.2]
Get https://自己服务器ip地址/v2/: Service Unavailable
交互式操作镜像。对于很多操作,我们需要进入正在运行的容器里进行一些操作。可以执行以下命令
docker run -it 2434bbb56338 /bin/bash 或
docker exec -it 2434bbb56338 bash 进入某个容器
删除所有停止运行的容器
sudo docker rm $(sudo docker ps -a -q)
三、docker使用
```shell
- 配置:docker的守护进行配置文件 /etc/docker/daemon.json
{ “insecure-registries” : [ “自己服务器ip地址:5000” ]}
因为docker镜像会用到本地服务器的镜像库,不支持https请求,所以需要进行以上配置
- 配置镜像包
编辑配置 .env
WORK_DIR= 代码目录
MYSQL_DATA_DIR=/data/mysql/data/redis
REDIS_DATA_DIR=
MC_DATA_DIR=/data/mc/data/nginx/log
NGINX_LOG_DIR=
配置nginx openresty
服务解析执行
docker-compose up -d
启动docker服务绑定本地host,
127.0.0.1 test.com127.0.0.1
3 更新镜像包
- 更新docker配置文件
- 执行docker-compose build 重建docker容器
- 执行docker-compose up -d 启动docker容器
4. 常用docker命令
- docker ps 查看所有容器
- docker exec -it 76e79889f101 bash 进入某个容器
- docker restart 76e79889f101 重启某个容器
- docker-compose restart 重启所有容器
常见问题
Connection failed: SQLSTATE[HY000] [2002] Connection refused
host 127.0.0.1改成localhost
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lzdong@foxmail.com