前置條件
- yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 設置阿里雲的docker源
- yum makecache fast 設置最快的源
- yum install -y docker-ce 安裝docker
- service docker start 啓動docker
- docker pull hello-world 拉取名爲hello-world的docker鏡像
- docker run hello-world 運行鏡像
阿里雲鏡像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://vw8b6y27.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
宿主機與容器端口映射
- docker run -d -p 8000:8080 tomcat 後臺運行容器
- docker ps 列出當前正在映射的容器以及相關信息
- docker rm (-f) 容器id 移除(非運行狀態下的)容器 -f 強制移除
- docker stop 容器id 停止容器
- docker rmi (-f) 鏡像名:tag 刪除鏡像
在容器中執行命令
- docker exec -it 容器id /bin/bash
容器啓動tomcat鏡像訪問報404問題
通過docker exec -it 容器id /bin/bash進入容器中,看到有webapps跟webapps-dist目錄,然後查看webapps目錄,發現竟然是空的,而webapps-dist是非空的,把webapps文件夾刪除,將webapps-dist重命名webapps,然後再訪問docker容器即可訪問到
構建自己的docker鏡像
- 創建目錄 mkdir -p /usr/image
- 在目錄下 mkdir first-dockerfile,
- 在first-dockerfile目錄下創建docker-web目錄及文件Dockerfile,編輯Dockerfile如下
# 設置基準鏡像
FROM tomcat:latest
# 鏡像的擁有者
MAINTAINER jack.com
# 設置切換工作目錄路徑 cd /usr/local/tomcat/webapps
WORKDIR /usr/local/tomcat/webapps
# 將docker-web中的所有內容複製到容器的工作目錄下的docker-web目錄
ADD docker-web ./docker-web
- 進入docker-web目錄,新建index.html,編輯index.html文件內容
<h1>自定義docker file<h1>
- 回到first-dockerfile目錄,通過
docker build -t jack.com/mywebapp:1.0 .
構建docker-file,如下圖所示
- 運行docker鏡像
docker run -d -p 8001:8080 jack.com/mywebapp:1.0
- 測試自定docker 如下圖(亂碼由於編碼問題,此處不關心)
FROM -基於基準鏡像
- FROM centos #製作基準鏡像(基於centos:latest)
- FROM scratch #不依賴任何基準鏡像base image
- FROM tomcat:9.0.22-jdk8-openjdk
- 儘量使用官方提供的Base Image
- MAINTAINER jack.com(dockerfile的維護機構或個人)
- LABEL version = “1.0”(維護的其他信息)
- LABEL description = “傑克個人工作室”
- WORKDIR /usr/local/newdir #自動創建
ADD©
- ADD hello / 複製到容器內部的根路徑下
- ADD test.tar.gz / 複製到根目錄並解壓
- ADD 除了複製,還具備添加遠程文件的功能
設置環境常量
- ENV JAVA_HOME /usr/local/openjdk8
- RUN ${JAVA_HOME}/bin/java -jar test.jar
- 儘量使用環境常量,可提高程序維護性
docker容器單項訪問
圖docker容器單項訪問
- docker run -d --name web tomcat 創建名稱爲web的tomcat容器
- docker run -d --name database -it centos /bin/bash 創建名爲database的centos容器
- docker inspect 容器id
- docker run -d --name web --link database tomcat 創建容器並添加鏈接
- docker exec -it 容器id /bin/bash
- ping 172.17.0.3/ping database
Bridge網橋雙向通信
- docker network ls 查看docker容器底層網絡服務明細
- docker network create -d bridge my-bridge 創建網橋
- docker network connect my-bridge web 將web容器綁定my-bridge網橋
容器間共享數據
- docker run --name 容器名 -v 宿主機路徑:容器內掛載路徑 鏡像名
實例:docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat - docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true 創建共享容器
- docker run --volumes-from webpage --name t1 -d tomcat 共享容器掛載點
Docker-compose安裝
- sudo curl -L “https://github.com/docker/compose/releases/download/1.25.0/docker-compose-(uname -m)” -o /usr/local/bin/docker-compose 獲取並自動安裝
- chmod +x /usr/local/bin/docker-compose 授權
- docker-compose -version 查看版本
通過docker-compose創建開源博客worldpress
- mkdir -p /usr/wordpress 創建新目錄並切換
- vim docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
- docker-compose up -d 安裝博客