1.安裝docker
安裝
yum install docker-io -y
查看版本
docker -v
啟動
service docker start
設(shè)置開機啟動
chkconfig docker on
2.配置docker
國內(nèi)訪問 Docker Hub 慢, 可用國內(nèi)鏡像源,本文用騰訊云的
設(shè)置docker庫
echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
systemctl daemon-reload
service docker restart
3.docker實操
下載鏡像
docker pull centos
查看當前鏡像列表 (解釋列信息)
docker images
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
docker.io/centos | latest | 75835a67d134 | 6 weeks ago | 200 MB |
拓展:
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Size}}"
顯示指定列
運行容器
1.標準模式
docker run -it centos /bin/bash
docker run < 相關(guān)命令 > < 鏡像名稱 | 鏡像ID[IMAGE_ID] | 倉庫名:標簽名[REPOSITORY:TAG] > < 初始命令 >
-i 允許有命令交互
-t 在新容器內(nèi)指定一個偽終端
/bin/bash初始命令
2.后臺模式
docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
065354682b055e773ecb2c7482a8526c2b7d2b54c2ac0f69d40291a8989aab64
-d 后臺運行
3.掛載目錄
docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash
-v 掛載目錄 -v < 宿主機目錄 >:< 容器目錄 >
4.查看日志
docker logs 065354682b055e773ecb2c7482a8526c2b7d2b54c2ac0f69d40291a8989aab64
docker日志輸出到指定文件
停止容器
docker stop [ 啟動容器返回的key | 容器ID ]
docker stop 065354682b055e773ecb2c7482a8526c2b7d2b54c2ac0f69d40291a8989aab64
查看容器
- 查看當前運行的容器
docker ps
|CONTAINER ID |IMAGE |COMMAND |CREATED |STATUS |PORTS |NAMES |
|--------------------|--------------------|--------------------|---------------------|----------------------------|--------------------|------------|
|CONTAINER ID |IMAGE |COMMAND |CREATED |STATUS |PORTS |NAMES |
|9b90b23597d2 |centos |"/bin/bash" |About a minute ago |Exited (0) 56 seconds ago | |epic_perlman| - 查看歷史運行過的容器
docker ps -a
刪除歷史運行過的容器信息
--殺死所有正在運行的容器
docker kill (docker ps -a -q)
--刪除所有未打 dangling 標簽的鏡像
docker rmi (docker images -q)
--強制刪除鏡像名稱中包含“doss-api”的鏡像
docker rmi --force 3}')
--刪除所有未使用數(shù)據(jù)
docker system prune
--只刪除未使用的volumes
docker volume prune
提交docker
docker commit -m="提交信息" [imageid] [dockername]
打tag,repository:tag是自己定義的
docker tag [imageid] [repository]:[tag]
刪除tag
docker rmi [repository]:[tag]
刪除容器歷史docker ps -a內(nèi)數(shù)據(jù)
docker rm [container]
保存docker到img文件
docker save [] > xxx.imgs
加載img文件
docker load xxx.img
刪除某鏡像
docker rmi -f IMAGE huang/testimport:v1
docker rmi < 相關(guān)命令 > IMAGE < REPOSITORY:TAR >
-f 強制刪除
4.進入后臺運行的Docker的四種方式
docker exec -it [ CONTAINER | 775c7c9ee1e1 ] /bin/bash
docker exec < 相關(guān)命令 > < 當前運行的容器CONTAINER | 啟動容器時返回的Key > <初始命令>
5.宿主機與Docker交互
從宿主機拷文件到容器里面
docker cp jdk-7u55-linux-i586.tar.gz high_saha:/opt
docker cp <文件> <>:< 容器目錄 >
自動編譯/etc/source
在~/.bashrc內(nèi)
source /etc/profile
6.容器的導(dǎo)入導(dǎo)出,加載保存
1.根據(jù)容器ID創(chuàng)建鏡像
docker commit 75c6825032ee hry/testcrt:v2
容器ID可以在docker ps -a獲取到[CONTAINER ID]
docker import [tar文件] < REPOSITORY:TAR>
2.保存容器
docker save -o /java_docker-io_centos__java_use-save.tar docker.io/centos:java
3.加載容器
docker load < /java_docker-io_centos__java_use-save.tar
Docker部署程序
## dockerfile
## 定義使用哪個基礎(chǔ)鏡像
FROM docker.io/centos:java2
## 作者信息
MAINTAINER huangruiying
## COPY /resources/path/xxx.jar
COPY regin-tools.jar /app.jar
## 運行
CMD java -jar /app.jar
## 設(shè)置對外端口
EXPOSE 8088
使用dockerfile生成當前項目的新的鏡像,"." 表示在當前目錄尋找dckerfile
docker build -t [REPOSITORY:TAG] .
啟動項目
docker run -p 8088:8088 -d --name regin-tools java_regin-tools:latest
docker run <-p [宿主機端口]:[容器端口]> <-d 表示后臺啟動> <--name [啟動的容器別名]> REPOSITORY:TAG
問題
- WARNING: IPv4 forwarding is disabled. Networking will not work.
# 宿主機運行:
vim /usr/lib/sysctl.d/00-system.conf
# 在文件內(nèi)添加
net.ipv4.ip_forward=1
# 重啟服務(wù)
systemctl restart network
systemctl restart docker
- /usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: "java": executable file not found in $PATH".
# 在docker鏡像內(nèi)添加軟鏈到/usr/bin
ln -s /your/javahome/bin/java /usr/bin/
# 再重新生成下鏡像