推薦閱讀
Dockerfile
在容器內(nèi)的主進(jìn)程啟動(dòng)之前,先啟動(dòng)另一個(gè)程序,根據(jù)鏡像中的文件和把鏡像啟動(dòng)為容器時(shí)向容器傳遞的環(huán)境變量(有需要的話替換配置文件),由這個(gè)程序啟動(dòng)主進(jìn)程。(exec)

FROM指令是最重要的一個(gè)且必須為Dockerfile文件開(kāi)篇的第一個(gè)非注釋行,用于指定映像文件構(gòu)建過(guò)程指定基準(zhǔn)鏡像,后續(xù)的指令運(yùn)行于此基準(zhǔn)鏡像所提供的運(yùn)行環(huán)境,本機(jī)不存在此基準(zhǔn)鏡像則從Registey拉取。MAINTANIER制作者的詳細(xì)信息。已替換為LABLE。COPY用于從Docker主機(jī)復(fù)制文件至創(chuàng)建的新映像文件(build上下文中的路徑,不能是父目錄中的文件)。ADD類似COPY,支持tar文件或者url路徑WORKDIR指定工作目錄。VOLUME創(chuàng)建掛載目錄。EXPOSE用于為容器打開(kāi)指定要監(jiān)聽(tīng)的端口以實(shí)現(xiàn)與外部通信。ENV用于為鏡像定義所需的環(huán)境變量,并可被文件中與其后的其它指令所調(diào)用。EVN key=value ${value}。 使用\換行 。可被run -e命令替換。RUN運(yùn)行在build時(shí),逐一運(yùn)行,由于pid不為1,需注意命令格式。CMD運(yùn)行在run時(shí),僅最后一個(gè)生效,會(huì)被run的參數(shù)覆蓋。ENTRYPOINT類似CMD,不會(huì)被run命令覆蓋,僅最后一個(gè)生效。(相關(guān)鏈接:https://www.cnblogs.com/reachos/p/8609025.html)USER指定用戶名或PID。HEALTHCHECK健康監(jiān)測(cè)。ARG指定build時(shí)的參數(shù)。
安裝
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce
sudo systemctl start docker
systemctl start docker & systemctl enable docker
運(yùn)行鏡像
docker pull registry.docker-cn.com/library/rabbitmq:3-mmanegement
docker images
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq image的id
docker ps
docker exec -it mysql5.7 /bash
退出:exit
容器鏡像刪除
1.停止所有的container,這樣才能夠刪除其中的images:
docker stop (docker ps -a -q)
2.查看當(dāng)前有些什么images
docker images
3.刪除images,通過(guò)image的id來(lái)指定刪除誰(shuí)
docker rmi <image id>
想要?jiǎng)h除untagged images,也就是那些id為<None>的image的話可以用
docker rmi 3}")
要?jiǎng)h除全部image的話
docker rmi $(docker images -q)
使用本地文件
docker run -d -p 3306:3306 --privileged=true -v /docker/mysql.conf.d/mysqld.cnf:/home/mysqld.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql
替換配置文件
簡(jiǎn)略步驟如下:
docker cp 3c8d188f7fb48:/etc/mysql/mysql.conf.d/mysqld.cnf /home/
docker cp /home/mysqld.cnf 3c8d188f7fb48:/etc/mysql/mysql.conf.d/mysqld.cnf
docker reload 3c8d188f7fb48
限制對(duì)內(nèi)存使用
docker run -e ES-JAVA-OPTS="-Xms 256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 image的id
發(fā)布jar包
#1、修改ip等環(huán)境配置后,導(dǎo)出jar包
mvn -DskipTests=true clean package
#2、新建Dockerfile文件,shop-manager-1.0-SNAPSHOT.jar為你自己項(xiàng)目的jar包名
FROM java:8
VOLUME /tmp
ADD shop-manager-1.0-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#3、將Dockerfile與jar包上傳至服務(wù)器同一目錄下,運(yùn)行docker build命令
docker build -t shop-manager .
#4、編譯成功后即可通過(guò)imange id運(yùn)行
# 查看日志需增加文件路徑映射 –v {宿主機(jī)目錄}:{docker日志目錄}
docker run -d -p 8080:8080 shop-manager