手把手教你Docker基礎命令和Dockerfile介紹


1.基礎命令

docker pull   拉取鏡像到本地 

默認是在hub.docker.com拉取,拉取是最新的版本,可以在后面指定版本":"

  

docker images 列出所有的鏡像

 

docker run            根據某個鏡像創建容器
-d                    讓容器在后台運行,其實就是一個進程
--name                給容器指定一個名字
-p                將容器的端口映射到宿主機的端口
docker run -d --name my-tomcat -p 9090:8080 tomcat

訪問成功

 

docker ps -a      查看containers

docker exec -it 進入到某個容器中並交互式運行
  docker exec -it containerid /bin/bash 
  
  exit              退出容器里面

docker stop 00a2bb8caee5         停止容器運行的應用
docker rm -f $(docker ps -aq) 先刪除所有container docker rmi -f $(docker images) 刪除所有的images docker run -d --name my-mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=123456 --privileged mysql 創建mysql容器
docker search first_dockerfile 查找文件
docker volume rm $(docker volume ls -qf dangling=true)
刪除所有未被容器引用的卷
docker network create --subnet=172.18.0.0/24 pro-net
docker network create/rm xxx 創建/刪除網絡
docker network ls 查看網絡
docker network inspect xxx 查看詳情

 2.Dockerfile文件命令介紹

FROM openjdk:8-jdk  //指定基礎鏡


//
在鏡像內部執行一些命令,比如安裝軟件,配置環境等,換行可以使用
RUN groupadd -r mysql && useradd -r -g mysql mysql

//設置變量的值,ENV MYSQL_MA JOR 5.7,可以通過docker run --e key=value修改,后面可以直接使用${MYSQL_MA JOR}
ENV MYSQL_MAJOR 5.7
 
         
VOLUME /var/lib/mysql   //指定數據的掛在目錄
  
 
//將主機的文件復制到鏡像內,如果目錄不存在,會自動創建所需要的目錄,注意只是復制,不會提取和解壓
COPY docker-entrypoint.sh /usr/local/bin/
 
 
//將主機的文件復制到鏡像內,和COPY類似,只是ADD會對壓縮文件提取和解壓
ADD application.yml /etc/it/
 
 
//指定鏡像的工作目錄,之后的命令都是基於此目錄工作,若不存在則創建
WORKDIR /usr/local
WORKDIR tomcat RUN
touch test.txt
//會在/usr/local/tomcat下創建test.txt文件
 
 
//容器啟動的時候默認會執行的命令,若有多個CMD命令,則最后一個生效
CMD ["mysqld"] 或CMD mysqld
 
 
//和CMD的使用類似,和cmd不同的是docker run執行時,會覆蓋CMD的命令,而ENTRYPOINT不會
ENTRYPOINT ["docker-entrypoint.sh"]

 

//指定鏡像要暴露的端口,啟動鏡像時,可以使用-p將該端口映射給宿主機
EXPOSE 3306

 

3.Dockerfile實戰Spring Boot項目(1)創建一個Spring Boot項目

(1)寫一個controller @RestController public class DockerController { @GetMapping("/dockerfile") @ResponseBody String dockerfile() { return "hello docker" ; } }
(2
)mvn clean package打成一個jar包
在target下找到
"dockerfile-demo-0.0.1-SNAPSHOT.jar"

(3)在docker環境中新建一個目錄"first-dockerfile"

(4)上傳"dockerfile-demo-0.0.1-SNAPSHOT.jar"到該目錄下,並且在此目錄創建Dockerfile
(5
)創建Dockerfile文件,編寫內容 FROM openjdk:8 MAINTAINER
tzj2019
LABEL name="dockerfile-demo" version="1.0" author="tzj2019" COPY dockerfile-demo-0.0.1-SNAPSHOT.jar dockerfile-image.jar CMD ["java","-jar","dockerfile-image.jar"] 
(6
)基於Dockerfile構建鏡像 docker build -t test-docker-image .(.代表當前目錄)
(7
)基於image創建container docker run -d --name user01 -p 8080:8080 test-docker-image
(8
)查看啟動日志docker logs user01

(9)宿主機上訪問curl localhost:6666/dockerfile hello docker (

(10)還可以再次啟動一個 docker run -d --name user02 -p 8081:8080 test-docker-image

 

4.將自己制作的鏡像推到阿里雲

//拷貝文件
cp /Users/XXX/XX/2019/01.Docker/dockerfile-demo/target/dockerfile-demo-0.0.1-SNAPSHOT.jar /usr/local/bin/first-dockerfile
 
 //登錄
XXX$ sudo docker login --username=阿里雲賬號 registry.cn-hangzhou.aliyuncs.com(采坑:換行多了空格會引起報錯)
  
//打個tag
sudo docker tag test-docker-image registry.cn-hangzhou.aliyuncs.com/tzj2019/test-docker-image:v1.0
 
//推送到阿里雲
sudo docker push registry.cn-hangzhou.aliyuncs.com/tzj2019/test-docker-image:v1.0

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM