文章目錄
- 一、常見命令
- 二、數據卷
- 三、數據掛載
- 四、自定義鏡像
- 五、網絡
一、常見命令
Docker最常見的命令就是操作鏡像、容器的命令,詳見官方文檔: https://docs.docker.com/
需求:
在DockerHub中搜索Nginx鏡像,查看鏡像的名稱
docker pull nginx
拉取Nginx鏡像
查看本地鏡像列表
docker images
創建并運行Nginx容器
docker run -d --name nginx -p 80:80 nginx
查看容器
docker ps
docker ps -a
停止容器
docker stop nginx
再次啟動容器
docker start nginx
進入Nginx容器
docker exec -it nginx bash
#退出容器
exit
刪除容器
docker rm mysql
docker rm -f mysql
二、數據卷
數據卷(volume)是一個虛擬目錄,是容器內目錄與宿主機目錄之間映射的橋梁。
三、數據掛載
查看容器是否與宿主機掛載
docker inspect 容器名
Mounts目錄下為掛載信息
docker inspect mysqldocker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v /root/mysql/data:/var/lib/mysql \-v /root/mysql/data:/docker-entrypoint-initdb.d \-v /root/mysql/data:/etc/mysql/conf.d \mysql
四、自定義鏡像
鏡像就是包含了應用程序、程序運行的系統函數庫、運行配置等文件的文件包。構建鏡像的過程其實就是把上述文件打包的過程。
更新詳細語法說明,請參考官網文檔: https://docs.docker.com/engine/reference/builder
案例:
我們可以基于Ubuntu基礎鏡像,利用Dockerfile描述鏡像結構
# 指定基礎鏡像
FROM ubuntu:16.04
# 配置環境變量,JDK的安裝目錄、容器內時區
ENV JAVA_DIR=/usr/local
# 拷貝jdk和java項目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安裝JDK
RUN cd $JAVA_DIR \ && tar -xf ./jdk8.tar.gz \ && mv ./jdk1.8.0_144 ./java8
# 配置環境變量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 入口,java項目的啟動命令
ENTRYPOINT ["java", "-jar", "/app.jar"]
也可以直接基于JDK為基礎鏡像,省略前面的步驟:
# 基礎鏡像
FROM openjdk:11.0-jre-buster
# 拷貝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
五、網絡
默認情況下,所有容器都是以bridge方式連接到Docker的一個虛擬網橋上:
加入自定義網絡的容器才可以通過容器名互相訪問,Docker的網絡操作命令如下: