Dockerfile构建随记
2020-11-06 本文已影响0人
菜的无法无天
- java环境变量配置
export JAVA_HOME=/usr/local/jdk1.8.0_221
export PATH=${PATH}:${JAVA_HOME}/bin:
-
构建过程中,复制文件使用copy not add ,构建过程中存在一次异常,使用add 添加jdk的tar包,后执行tar -xvf 脚本,提示tar包成了文件夹,进入构建失败的image,发现源码tar包的被add复制成了文件夹,后使用copy正常执行构建脚本
-
环境变量定义问题 在dockerfile中操作/etc/profile文件,然后再执行source /etc/profile ,等镜像构建完成后,开启一个容器,会发现配置的环境变量是无效的。 解决方法,a、使用env 在dockerfil中直接定义环境变量 b、在家目录下的 .bashrc 中添加 source /etc/profile 一行 。
-
tar下载源,以前放在腾讯云的代码仓库上,现在无法访问了,还好阿里的coding还可以使用,使用wget直接下载上传的源码包,赞阿里一个,让我白嫖一次
-
docker-compose 配置 docker -e 参数 使用 environment
-
centos8换yum源出现问题,记得下载8版本的源 不要下载错了
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
5.清除文件并重建元数据缓存
yum clean all
yum makecache
6.最后更新软件包,这一步要下载安扎ung或升级一百多个软件包,比较费时间,大概三五分钟吧!
yum update -y
- 设置镜像为东八区时间
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- centos镜像里面没有sshd和ssh命令
for ssh
yum安装ssh客户端
yum -y install openssh-clients
ssh root@127.0.0.1
root@127.0.0.1's password:
for sshd
yum install -y passwd openssl openssh-server
/usr/sbin/sshd
启动sshd
/usr/sbin/sshd
这一步,若报错,如
Could not load host key: /etc/ssh/ssh_host_rsa_key
则使用如下名令
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
再次执行,便是启动了
ssh 无密码登录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
- dockerfile 的cmd和enterpoint 一起使用,先执行enterpoint 再拼接cmd为参数
ENTRYPOINT ["sh", "/usr/local/bin/entrypoint.sh"]
CMD /root/startup.sh
entrypoint.sh 脚本末尾貌似必须是
exec $@
- docker创建自定义网络,和运行容器时候指定ip和主机名
# 创建网络
docker network create --subnet=192.18.0.0/16 mynetwork
# 运行容器 设置主机名和ip
docker run -it --rm -h master --net mynetwork --ip 199.18.0.2 042324fdbc6e /bin/bash
- docker容器运行不退出的方法
问题描述
执行docker run image-id bash后,容器退出
解决方法
docker容器的主线程(dockfile中CMD执行的命令)结束,容器会退出
有以下几种解决方法:
#使主进程无法结束
docker run -d centos /bin/bash -c "while true;do echo hello docker;sleep 1;done"
#使用交互式启动
docker run -i [CONTAINER_NAME or CONTAINER_ID]
#使用后台模式和tty选项
docker run -dit [CONTAINER_NAME or CONTAINER_ID]
构建dockefile代码仓库