阿里雲:
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
https://download.docker.com/linux/centos/docker-ce.repo
****curl url #可以看一下網絡通不通
****虛擬機的時候,設置兩個網卡:一個host-only,一個nat
一、docker基本操作
1、安裝
#可以查看docker有沒有鏡像
$ docker search XXX
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repohttps://download.docker.com/linux/centos/docker-ce.repo
# 關閉防火牆和selinux
$ systemctl stop firewalld
$ setenforce 0
運行 (root賬號執行啟動)
$ sudo systemctl start docker
2、安裝鏡像
# docker images [root@bogon docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e38bc07ac18e 5 weeks ago 1.85kB centos latest e934aafc2206 5 weeks ago 199MB [root@bogon docker]# docker run -ti e934 進入鏡像,退出 [root@cf085ef769b3 /]# exit
3、一些常見命令(這部分有粘貼,如果侵權,聯系刪除)
1、docker -h 幫助 2、獲取鏡像 sudo docker pull NAME[:TAG] sudo docker pull centos:latest 3、啟動Container盒子 sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...] sudp docker run -t -i contos /bin/bash 4、查看鏡像列表,列出本地的所有images sudo docker images [OPTIONS] [NAME] sudo docker images centos 5、查看容器列表,可看到我們創建過的所有container sudo docker ps [OPTIONS] sudo docker ps -a 6、刪除鏡像,從本地刪除一個已經下載的鏡像 sudo docker rmi IMAGE [IMAGE...] sudo docker rmi centos:latest 7、移除一個或多個容器實例 sudo docker rm [OPTIONS] CONTAINER [CONTAINER...] 移除所有微運行的容器 sudo docker rm sudo docker ps -aq 8、停止一個正在運行的容器 sudo docker kill [OPTIONS] CONTAINER [CONTAINNER...] sudo docker kill 026e 9、重啟一個正在運行的容器 sudo docker restart [OPTIONS] contains[CONTAINER] sudo docker restart 026e 10、停止一個已經停止的容器 sudo docker start [OPTIONS] CONTAINER [CONTAINER..] sudo docker start 026e
4、外界訪問,用 docker run -ti 訪問,外界無法訪問,要加映射
安裝jdk,搜索安裝 yum search java|grep jdk yum install java-1.8.0-openjdk
查看jdk版本
java -version
5、安裝一個jdk的鏡像
#這個應該不太對,這個是整個java的
#安裝一個jdk的鏡像
sudo docker pull java
在相應的目錄項創建文件
(創建目錄 mkdir dockerInfo
創建文件 touch Dockerfile)
[root@bogon dockerInfo]# ls
Dockerfile javastudy.jar run.sh
6、編輯文件
#Dockerfile文件內容 FROM java ADD javastudy.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-jar","/app.jar"]
#說明
dockerfile的基礎命令FROM:
指為當前的環境引入一個基礎鏡像(nginx環境之上的linux內核鏡像)
RUN:運行指令(apt install vim相似的指令)
CMD:執行命令(和run很相似,但是一個dockerfile只能有一個cmd指令,如有 多個最后一個生效)
LABEL:設置標簽(類似為變量賦值)
EXPOSE:暴露端口號(解除斷口的防火牆)
ENV:設置環境變量
COPY:復制到指定地方
ADD: copy指令的高級版(具有解壓功能)
ENTRYPOINT:切入點(如run功能相似,但是可以覆蓋CMD的內容)
VOLUME:掛載的作用
USER:指定容器的用戶
WORKDIR:如果目錄存在 cd到指定目錄,不存在則創建並cd到指定目錄
ARG:表示變量
7、創建新的鏡像
#其中 -t 標記來添加 tag,指定新的鏡像的用戶信息。“.” 是 Dockerfile 所在的路徑(當前目錄),也可以替換為一個具體的 Dockerfile 的路徑。 #注意最后的那個 . # -t 說明的鏡像名稱,沒有-f,是默認當前目錄下的Dockerfile #有-f,是指定目錄,還有,每次需改Dockerfile,需要修改鏡像 sudo docker build -t springboottest . #修改鏡像(大概是這樣,沒試過) docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 #刪除鏡像 docker images #記住鏡像的Id docker ps -a #查看鏡像下的容器 docker rm 容器id
#刪除所有的容器
docker rm $(docker ps -a -q) #在刪除鏡像 docker rmi 鏡像id
8、運行
#內部運行 不推薦, docker run -ti springboottest #設置端口號 docker run -d -p 8080:8080 springboottest 就可以訪問了 http://Ip:8080
二、Nginx的安裝使用
1、鏡像
#查看docker有沒有鏡像
docker search nginx
#查看到最新的
docker pull nginx
#可以查到 nginx的鏡像
docker images
2、運行,分配端口80
#運行,分配端口80 docker run -d -p 80:80 nginx #可以訪問IP,80是默認端口
3、使用配置
#查看容器Id docker ps #進入容器 docker inspect 容器Id號 #還有另外一種方法 $ sudo docker ps $ sudo docker exec -ti 容器Id /bin/bash
#vi 和vim沒有找到命令,安裝一下命令
$ apt-get update
$apt-get install vim
#查看nginx配置
$ cd /etc/nginx/
$ vi nginx.conf
#nginx.conf說明
########### 每個指令必須有分號結束。#################
#user administrator administrators; #配置用戶或者組,默認為nobody nobody。
#worker_processes 2; #允許生成的進程數,默認為1
#pid /nginx/pid/nginx.pid; #指定nginx進程運行文件存放地址
error_log log/error.log debug; #制定日志路徑,級別。這個設置可以放入全局塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg
events {
accept_mutex on; #設置網路連接序列化,防止驚群現象發生,默認為on
multi_accept on; #設置一個進程是否同時接受多個網絡連接,默認為off
#use epoll; #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #最大連接數,默認為512
}
http {
include mime.types; #文件擴展名與文件類型映射表
default_type application/octet-stream; #默認文件類型,默認為text/plain
#access_log off; #取消服務日志
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式
access_log log/access.log myFormat; #combined為日志格式的默認值
sendfile on; #允許sendfile方式傳輸文件,默認為off,可以在http塊,server塊,location塊。
sendfile_max_chunk 100k; #每個進程每次調用傳輸數量不能大於設定的值,默認為0,即不設上限。
keepalive_timeout 65; #連接超時時間,默認為75s,可以在http,server,location塊。
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #熱備
}
error_page 404 https://www.baidu.com; #錯誤頁
server {
keepalive_requests 120; #單連接請求上限次數。
listen 4545; #監聽端口
server_name 127.0.0.1; #監聽地址
location ~*^.+$ { #請求的url過濾,正則匹配,~為區分大小寫,~*為不區分大小寫。
#root path; #根目錄
#index vv.txt; #設置默認頁
proxy_pass http://mysvr; #請求轉向mysvr 定義的服務器列表
deny 127.0.0.1; #拒絕的ip
allow 172.18.5.54; #允許的ip
}
}
}
三、mysql
#鏡像
$ docker pull mysql
#運行mysql
$ docker run -d -P mysql