編輯檔案
vi /etc/docker/daemon.json
輸入如下內容:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
重新啓動服務:
systemctl restart docker.service
docker pull mysql:5.7.10
# 用163境像加速,注意5.7.10小版本沒有境像
docker pull hub.c.163.com/library/mysql:5.7
# 重新命名境像
docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7
# 建立目錄
mkdir /mydata/docker/mysql/logs
mkdir /mydata/docker/mysql/data
mkdir /mydata/docker/mysql/conf
# 目錄對映,注意宿主機my.cnf埠是指容器內的mysql埠
docker run -p 3307:3306 --name mysql --privileged=true \
-v /mydata/docker/mysql/conf/my.cnf:/etc/my.cnf \
-v /mydata/docker/mysql/logs:/var/log/mysql \
-v /mydata/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=AFG444 \
-d mysql:5.7
# 設定容器範例自啓動
docker update --restart=always mysql
# 進入docker環境
docker exec -it mysql bash
# 登錄mysql
mysql -uroot -p
-- 遠程登錄許可權
use mysql;
grant all privileges on *.* to root@"%" identified by "AFG444" with grant option;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'AFG444';
flush privileges;
chown: changing ownership of '/var/lib/mysql/': Permission denied
加上 --privileged=true 參數
/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/mysql" is already in use by container f4f8250c9a864f0807408af7d9ef456cb0aa50569f27373e9a1f3103d56dcd61. You have to remove (or rename) that container to be able to reuse that name..
刪除容器範例,重建一個。
# 檢視
docker ps -a
#刪除
docker rm container_id
可通過https://hub.docker.com/_/rabbitmq?tab=tags查詢版本
#帶WEB控制檯
docker pull rabbitmq:3.6.6-management
#不帶WEB控制檯
docker pull rabbitmq:3.6.6
#啓動rabbitmq容器範例
docker run --name rabbitmq3.6.6 -p 15672:15672 -p 5672:5672 -d rabbitmq:3.6.6-management
#開機啓動
docker update --restart=always rabbitmq3.6.6
web端:http://192.168.0.5:15672
# 拉起境像
docker pull hub.c.163.com/library/tomcat:8.0
# 改名
docker tag hub.c.163.com/library/tomcat:8.0 tomcat:8.0
# 建立對映目錄
mkdir /mydata/docker/tomcat/conf
mkdir /mydata/docker/tomcat/logs
mkdir /mydata/docker/tomcat/webapps
# 執行容器範例
docker run -p 8081:8080 --name tomcat --privileged=true \
-v /etc/localtime:/etc/localtime \
-v /mydata/docker/tomcat/conf:/usr/local/tomcat/conf \
-v /mydata/docker/tomcat/logs:/usr/local/tomcat/logs \
-v /mydata/docker/tomcat/webapps:/usr/local/tomcat/webapps \
-d tomcat:8.0
# 開機啓動
docker update --restart=always tomcat
修改對映目錄中的內容,會同步更新docker內的檔案。
檔案內容:
# FROM docker.io/centos:7
FROM centos
MAINTAINER test<[email protected]>
RUN yum install kde-l10n-Chinese -y
RUN yum reinstall glibc-common -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
RUN export LANG=zh_CN.UTF-8
RUN echo -e "export LANG=zh_CN.UTF-8" > /etc/locale.conf
RUN echo -e "export LANG=zh_CN.UTF-8" > /etc/profile
RUN source /etc/profile
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
COPY jdk-8u241-linux-x64.rpm /usr/
WORKDIR /usr/
RUN rpm -ivh jdk-8u241-linux-x64.rpm
ADD apache-tomcat-8.0.28 /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["/bin/bash", "/usr/local/tomcat/bin/catalina.sh", "run"]
生成image
# 當前目錄使用Dockerfile檔名
docker build -t tomcat:centos .
# 指定檔名方式,注意最後一個點
docker build -f /mydata/tools/tomcat_Dockerfile -t tomcat:centos .
# 檢視剛剛建立的境像
docker images
# 執行容器範例(下面 下麪的境像名稱,使用剛剛建立的境像)
docker run -p 8081:8080 --name tomcat --privileged=true \
-v /etc/localtime:/etc/localtime \
-v /mydata/docker/tomcat/conf:/usr/local/tomcat/conf \
-v /mydata/docker/tomcat/logs:/usr/local/tomcat/logs \
-v /mydata/docker/tomcat/webapps:/usr/local/tomcat/webapps \
-d tomcat:centos
# 開機啓動
docker update --restart=always tomcat
# 安裝
docker pull memcached:1.5.12
# 執行-m表示分配記憶體的大小,128M,預設不加-m參數,則爲64M,-v參數指定了時間與宿主機同步
docker run --name memcached1.5.12 \
-v /etc/localtime:/etc/localtime:ro \
-p 11211:11211 \
-m 128 \
-d memcached:1.5.12 memcached
# 開機啓動
docker update --restart=always memcached1.5.12
docker search mysql 搜尋境像
docker pull mysql:5.7.10 安裝境像
docker images 檢視境像
docker exec -it container_name bash 進入容器 (在容器內執行 ctrl+p+q 退出容器,但不關閉容器, ctrl+q退出並關閉)
docker rmi mysql:5.7 刪除境像
docker ps -a 檢視所有容器範例
docker rm id 刪除容器範例
docker start id 啓動容器範例(第一次啓動用run)
docker stop id 停止容器範例
docker logs [OPTIONS] CONTAINER 檢視日誌
docker create 建立容器範例,但不執行
docker run 建立容器範例,並且執行
docker rmi `docker images | grep '<none>' | awk '{print $3}'` 刪除所有none的容器(注意要用docker ps -a檢視一下,是否在執行)
參考:https://my.oschina.net/u/4230760/blog/3119321
將容器範例製作成tar境像
docker commit id mysql:5.7.18
# 例如:
docker commit 640c369d7093 nginx2:test
# (test表示tag,例如mysql的5.7)
將變更後的tar包儲存在當前路徑下
docker save -o mysql5.7.18.tar mysql:5.7.18
將tar變成新的容器範例
docker load --input mysql5.7.18.tar
使用docker images檢視容器範例,
然後再使用run命令執行新的容器範例,注意埠和目錄對映關係。
在memcached的安裝中,增加了-v參數指定時間與宿主機同步。
如果是已經安裝好的doker,可使用如下方法處理。
# 複製宿主機時間檔案
docker cp /usr/share/zoneinfo/Asia/Shanghai container_id:/etc/localtime
# 重新啓動容器
docker restart container_id
# 登錄宿主機
docker exec -it container_id bash
# 檢視時間
date