DOCKER筆記

推薦閱讀

https://blog.51cto.com/gouyc

Dockerfile

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

image.png

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) 如果想要?jiǎng)h除所有container的話再加一個(gè)指令: docker rm(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 (docker images | grep "^<none>" | awk "{print3}")
要?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  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一章節(jié): DOCKER的安裝與使用 1、Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看本...
    可笑可樂(lè)閱讀 389評(píng)論 0 1
  • 安裝 yum -y install docker-iowget -qO- https://get.docker.c...
    Martin_阿錘閱讀 274評(píng)論 0 0
  • Docker搭建環(huán)境 MySql -p 3306:3306:將容器的 3306 端口映射到主機(jī)的 3306 端口。...
    CMPEAX閱讀 273評(píng)論 0 0
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡(jiǎn)書(shū) 1. ps命令介紹及Linux進(jìn)程狀態(tài)...
    SnailTyan閱讀 873評(píng)論 0 0

友情鏈接更多精彩內(nèi)容