docker安裝各類軟件


安裝Docker

Docker 要求 CentOS 系統的內核版本高於 3.10 , uname -r 命令查看你當前的內核版本

1 安裝一些必要的系統工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

  

2 添加軟件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

3 更新 yum 緩存:

sudo yum makecache fast

 

4 安裝 Docker-ce:

sudo yum -y install docker-ce

 

5 啟動 Docker 后台服務

sudo systemctl start docker

 

6 配置 鏡像加速

vim /etc/docker/daemon.json

 

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

 

docker刪除命令

sudo yum remove docker-ce
sudo rm -rf /var/lib/docker

Docker 安裝mysql

1 查找Docker Hub上的mysql鏡像

docker search mysql

 

2 這里我們拉取官方的鏡像,標簽為5.6

docker pull mysql:5.6

 

3 等待下載完成后,我們就可以在本地鏡像列表里查到REPOSITORY為mysql,標簽為5.6的鏡像。

docker images |grep mysql

 

使用 mysql 鏡像

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

命令說明:

  • -p 3306:3306:將容器的 3306 端口映射到主機的 3306 端口。

  • -v -v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。

  • -v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。

  • -v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。

  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。

查看容器啟動情況

docker ps 

 

登陸mysql

mysql -u root -p

 

Docker 安裝Nginx

1 查找 Docker Hub 上的 nginx 鏡像

docker search nginx

 

2 這里我們拉取官方的鏡像

docker pull nginx

 

3 等待下載完成后,我們就可以在本地鏡像列表里查到 REPOSITORY 為 nginx 的鏡像。

docker images nginx

 

4 以下命令使用 NGINX 默認的配置來啟動一個 Nginx 容器實例:

 docker run --name runoob-nginx-test -p 8081:80 -d nginx
  • runoob-nginx-test 容器名稱。
  • the -d設置容器在在后台一直運行。
  • the -p 端口進行映射,將本地 8081 端口映射到容器內部的 80 端口。

執行以上命令會生成一串字符串,類似 1dd4380ba70820bd2acc55ed2b326dd8c0ac7c93f68f0067daecad82aef5f938,這個表示容器的 ID,一般可作為日志的文件名。

 

5 我們可以使用 docker ps 命令查看容器是否有在運行:

docker ps

 

6 PORTS 部分表示端口映射,本地的 8081 端口映射到容器內部的 80 端口。

在瀏覽器中打開 http://127.0.0.1:8081/,效果如下:

nginx 部署

首先,創建目錄 nginx, 用於存放后面的相關東西

mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

 

拷貝容器內 Nginx 默認配置文件到本地當前目錄下的 conf 目錄,容器 ID 可以查看 docker ps 命令輸入中的第一列:

docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
  • www: 目錄將映射為 nginx 容器配置的虛擬目錄。
  • logs: 目錄將映射為 nginx 容器的日志目錄。
  • conf: 目錄里的配置文件將映射為 nginx 容器的配置文件。

部署命令

docker run -d -p 8082:80 --name runoob-nginx-test-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
  • -p 8082:80: 將容器的 80 端口映射到主機的 8082 端口。

  • --name runoob-nginx-test-web:將容器命名為 runoob-nginx-test-web。

  • -v ~/nginx/www:/usr/share/nginx/html:將我們自己創建的 www 目錄掛載到容器的 /usr/share/nginx/html。

  • -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:將我們自己創建的 nginx.conf 掛載到容器的 /etc/nginx/nginx.conf。

  • -v ~/nginx/logs:/var/log/nginx:將我們自己創建的 logs 掛載到容器的 /var/log/nginx。

cd ~/nginx/www

 

創建 index.html 文件,效果如下:

 

 

 

 

相關命令

如果要重新載入 NGINX 可以使用以下命令發送 HUP 信號到容器:

docker kill -s HUP container-name

重啟 NGINX 容器命令:

 docker restart container-name

 

Docker 安裝 Tomcat

1 查找Docker Hub上的tomcat鏡像

docker search tomcat

 

2 這里我們拉取官方的鏡像

 docker pull tomcat

 

3 等待下載完成后,我們就可以在本地鏡像列表里查到REPOSITORY為tomcat的鏡像。

docker images|grep tomcat

 

 

使用tomcat鏡像

docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat  

命令說明:

-p 8080:8080:將容器的8080端口映射到主機的8080端口

-v $PWD/test:/usr/local/tomcat/webapps/test:將主機中當前目錄下的test掛載到容器的/test

查看容器啟動情況

docker ps 

 

通過瀏覽器訪問

 

 

 

Docker 安裝 java

1 查找Docker Hub上的java jdk鏡像

docker pull java:8u111

 

2 這里我們拉取官方的鏡像

docker pull java:8u111

 

3 使用鏡像

docker run -d -p 9090:9090 -v /usr/springboot-1.jar:/usr/springboot-1.jar --name springboot java:8u111 java -jar /usr/springboot-1.jar

命令說明:

  • -d 表示在后台啟動
  • -p 9090:9090 表示將容器的端口 映射成宿主主機的端口,否則9090端口訪問不到
  • -v /usr/springboot-1.jar:/usr/springboot-1.jar 表示將宿主主機的jar文件,映射到容器中(分號前為宿主主機的路徑,分號后為容器中的路徑)
  • --name springboot 表示為該容器取一個全局唯一的名稱,這里我取的名稱為springboot
  • java:8u111 表示鏡像文件的名稱和tag
  • java -jar /usr/springboot-1.jar 表示運行jar包,注意:這里的jar包為容器中的位置,是通過前面的-v屬性映射的

查看鏡像

docker images

 

 

Docker 安裝 rabbit

1 查找Docker Hub上的rabbit鏡像

docker search rabbitmq:3-managemen

 

2 這里我們拉取官方的鏡像

docker pull rabbitmq:3-managemen

 

 

3 使用鏡像

第一種是 默認生成的 登陸名guest  密碼guest

第二只種 可設置密碼

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management

docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:3-management

 

命令說明:

  • -d 后台運行容器;
  • --name 指定容器名;
  • -p 指定服務運行的端口(5672:應用訪問端口;15672:控制台Web端口號);
  • -v 映射目錄或文件;
  • --hostname  主機名(RabbitMQ的一個重要注意事項是它根據所謂的 “節點名稱” 存儲數據,默認為主機名);
  • -e 指定環境變量;(RABBITMQ_DEFAULT_VHOST:默認虛擬機名;RABBITMQ_DEFAULT_USER:默認的用戶名;RABBITMQ_DEFAULT_PASS:默認用戶名的密碼)

Docker 安裝 Redis

1 查找Docker Hub上的Redis鏡像

 docker search  redis

 

2 這里我們拉取官方的鏡像

docker pull  redis:5.0

 

3 使用鏡像

docker run -p 6379:6379 -v $PWD/data:/data  -d redis:3.2 redis-server --appendonly yes

 

4 連接容器

docker exec -it 4655d050c898 redis-cli

 

5 查看容器信息

info

 

Docker 安裝 Jenkins

1.pull一個jenkins鏡像

docker pull jenkins/jenkins:lts

這個是安裝最新版的jenkins,如果安裝舊版本,很多插件安裝不上,docker環境下升級又比較麻煩。

 

2.查看已經安裝的jenkins鏡像

docker images

 

3.創建一個jenkins目錄

mkdir /home/jenkins_home

 

4.啟動一個jenkins容器

docker run -d --name jenkins -p 8082:8080 -v /home/jenkins:/home/jenkins jenkins/jenkins:lts ;

 

5.查看jenkins服務

docker ps | grep jenkins或者docker ps

 

6.訪問http://39.108.62.247:8082/  

 

 7.進入容器內部

docker exec -it jenkins /bin/bash;

 

8.執行:cat /var/jenkins_home/secrets/initialAdminPassword,得到密碼並粘貼過去,然后就安裝完成了

 

 

Docker 安裝 Gogs(搭建git網站)

1 pull一個gogs鏡像

docker pull gogs/gogs

 

2 創建gogs的存儲目錄

mkdir -p /var/gogs

3 運行鏡像 生成容器

docker run --name=gogs -d  -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs

4 訪問 http://xxx.xxx.xxx.xxx:10080/ 

 

 

docker 常用命令

 

docker服務自動重啟設置

systemctl enable docker.service

 

docker容器自動啟動設置

docker update --restart=always <CONTAINER ID>

  在使用docker run啟動容器時,也可以使用--restart參數來設置:

 

連接容器

docker exec -it  容器ID或者容器名 /bin/bash

 

 

 

查看容器映射的端口

docker container port 容器ID

 

 

 

docker cp命令

語法:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

 

OPTIONS說明:

-L :保持源目標中的鏈接

實例

將主機/www/runoob目錄拷貝到容器96f7f14e99ab的/www目錄下

docker cp /www/runoob 96f7f14e99ab:/www/

將主機/www/runoob目錄拷貝到容器96f7f14e99ab中,目錄重命名為www

docker cp /www/runoob 96f7f14e99ab:/www

將容器96f7f14e99ab的/www目錄拷貝到主機的/tmp目錄中

docker cp  96f7f14e99ab:/www /tmp/

 

 

容器操作

 

運行容器

使用命令:docker run --name container-name:tag -d image-name

  1. --name:自定義容器名,不指定時,docker 會自動生成一個名稱
  2. -d:表示后台運行容器
  3. image-name:指定運行的鏡像名稱以及 Tag 

如下所示啟動 docker.io/tomcat 鏡像成功,前綴 docker.io 可以不寫,后面的 tag 版本號要指定。可以使用 docker ps 命令查看容器

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    8.5.32              5808f01b11bf        35 hours ago        463 MB
[root@localhost ~]# docker run --name myTomcat -d tomcat:8.5.32
1cbabce49b840d14ab01e25e0d282737b853681debdc541fddf27b508906a62a
[root@localhost ~]# 

 

查看容器

使用 docker ps 命令 查看正在運行的所有容器,加上 -a 參數可以查看所有容器(即無論是否運行中)

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    8.5.32              5808f01b11bf        35 hours ago        463 MB
[root@localhost ~]# docker run --name myTomcat -d tomcat:8.5.32
1cbabce49b840d14ab01e25e0d282737b853681debdc541fddf27b508906a62a
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1cbabce49b84        tomcat:8.5.32       "catalina.sh run"   4 minutes ago       Up 4 minutes        8080/tcp            myTomcat
[root@localhost ~]#

CONTAINER ID:容器 di

IMAGE:鏡像名稱:Tag

 COMMAND:命令

CREATES:容器創建的時刻

STATUS:容器當前的狀態 (up 表示運行、Exited 表示停止運行)

PORTS:鏡像程序使用的端口號

注意此時雖然容器已經在運行中,Tomcat 鏡像占用8080端口,但是這個8080端口是 Docker 容器內部的端口,並不是服務器的端口,所以必須做 端口映射 將服務器的實際端口映射到 Docker 容器中的端口才能訪問。

停止容器

使用 docker stop container-name/container-id 命令進行停止容器運行,指定容器名或者容器 id 即可

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1cbabce49b84        tomcat:8.5.32       "catalina.sh run"   14 minutes ago      Up 14 minutes       8080/tcp            myTomcat
[root@localhost ~]# docker stop 2cbabce49b66
1cbabce49b84
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
1cbabce49b84        tomcat:8.5.32       "catalina.sh run"   16 minutes ago      Exited (143) About a minute ago                       myTomcat
[root@localhost ~]#

 

啟動容器

使用 docker start container-name/container-id 命令啟動停止運行的容器,同理可以根據 容器名或者 容器 id 進行啟動

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                           PORTS               NAMES
1cbabce49b84        tomcat:8.5.32       "catalina.sh run"   About an hour ago   Exited (143) About an hour ago                       myTomcat
[root@localhost ~]# docker start 1cbabce49b84
1cbabce49b84
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1cbabce49b84        tomcat:8.5.32       "catalina.sh run"   About an hour ago   Up 3 seconds        8080/tcp            myTomcat
[root@localhost ~]#

刪除容器

  • 使用 docker rm container-id 命令 刪除容器,刪除容器前,必須先停止容器運行,根據 容器 id 進行刪除
  • rm 參數是刪除容器,rmi 參數是刪除鏡像
  • 鏡像運行在容器中,docker 中可以運行多個互補干擾的容器,可以將同一個鏡像在多個容器中進行運行
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1cbabce49b84        tomcat:8.5.32       "catalina.sh run"   About an hour ago   Up 3 seconds        8080/tcp            myTomcat
[root@localhost ~]# docker stop myTomcat
myTomcat
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
1cbabce49b84        tomcat:8.5.32       "catalina.sh run"   About an hour ago   Exited (143) 3 seconds ago                       myTomcat
[root@localhost ~]# docker rm 66cbabce49b8
1cbabce49b84
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# 

端口映射

使用命令:docker run --name container-name:tag -d -p 服務器端口:Docker 端口 image-name

--name:自定義容器名,不指定時,docker 會自動生成一個名稱
-d:表示后台運行容器
image-name:指定運行的鏡像名稱以及 Tag 
-p 表示進行服務器與 Docker 容器的端口映射,默認情況下容器中鏡像占用的端口是 Docker 容器中的端口與外界是隔絕的,必須進行端口映射才能訪問

  • 如下所示:服務器防火牆先開放了 8080、8090 端口,否則防火牆不開放端口的話,從其它電腦也是無法訪問服務器的
  • 然后 運行了 兩個容器,容器名稱分別指定為 "myTomcat1"、"myTomcat2"、兩個容器中都是同一個 docker.io/tomcat:8.5.32 鏡像
  • 兩個容器都指定了端口映射,分別是8080、8090 ,都會轉發到 Docker 容器內部
[root@localhost ~]# firewall-cmd --zone=public --list-port
9876/tcp 8090/tcp 80/tcp 8080/tcp
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    8.5.32              5808f01b11bf        38 hours ago        463 MB
[root@localhost ~]# docker run --name myTtomcat1 -d -p 8080:8080 tomcat:8.5.32 
d67cca0aacf7cc4a91112721769ba56aadbe55e8e78ff6749528cf5cecb38f6e
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"   19 seconds ago      Up 17 seconds       0.0.0.0:8080->8080/tcp   myTtomcat1
[root@localhost ~]# docker run --name myTtomcat2 -d -p 8090:8080 tomcat:8.5.32 
0f6df57a7fa189710c0d2c3088334a7ff725c7e57eea71220ffb67049eaf5f5a
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
0f6df57a7fa1        tomcat:8.5.32       "catalina.sh run"   3 seconds ago       Up 1 second         0.0.0.0:8090->8080/tcp   myTtomcat2
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"   53 seconds ago      Up 51 seconds       0.0.0.0:8080->8080/tcp   myTtomcat1
[root@localhost ~]#

啟動成功之后,ip addr show 查一下服務器 ip 地址( 39.108.62.247),然后就能從物理機上訪問了

[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ea:9e:7f brd ff:ff:ff:ff:ff:ff
    inet 39.108.62.247/24 brd 192.168.58.255 scope global noprefixroute dynamic eno16777736
       valid_lft 1771sec preferred_lft 1771sec
    inet6 fe80::20c:29ff:feea:9e7f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:9d:e0:f0:14 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:9dff:fee0:f014/64 scope link 
       valid_lft forever preferred_lft forever
9: veth8675b32@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether be:8c:64:6e:2b:08 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::bc8c:64ff:fe6e:2b08/64 scope link 
       valid_lft forever preferred_lft forever
11: vethb98436b@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 26:ae:79:9a:05:7b brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::24ae:79ff:fe9a:57b/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

容器日志

使用 docker logs container-name/container-id 命令 可以查看容器日志信息,指定容器名或者 容器 id 即可

命令說明:

  • -f : 跟蹤日志輸出

  • --since :顯示某個開始時間的所有日志

  • -t : 顯示時間戳

  • --tail :僅列出最新N條容器日志

查看容器詳情

docker inspect 容器ID


免責聲明!

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



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